--- IO-AIO/AIO.xs 2006/10/31 00:11:52 1.89 +++ IO-AIO/AIO.xs 2006/11/08 02:01:02 1.93 @@ -89,6 +89,8 @@ if (!aio_buf) \ return -1; +typedef SV SV8; /* byte-sv, used for argument-checking */ + enum { REQ_QUIT, REQ_OPEN, REQ_CLOSE, @@ -447,10 +449,9 @@ call_pv ("IO::AIO::_fd2fh", G_SCALAR | G_EVAL); SPAGAIN; - fh = SvREFCNT_inc (POPs); - + fh = POPs; PUSHMARK (SP); - XPUSHs (sv_2mortal (fh)); + XPUSHs (fh); } break; @@ -1311,7 +1312,7 @@ void aio_open (pathname,flags,mode,callback=&PL_sv_undef) - SV * pathname + SV8 * pathname int flags int mode SV * callback @@ -1354,7 +1355,7 @@ SV * fh UV offset UV length - SV * data + SV8 * data UV dataoffset SV * callback ALIAS: @@ -1415,7 +1416,7 @@ void aio_readlink (path,callback=&PL_sv_undef) - SV * path + SV8 * path SV * callback PROTOTYPE: $$;$ PPCODE: @@ -1480,7 +1481,7 @@ void aio_stat (fh_or_path,callback=&PL_sv_undef) - SV * fh_or_path + SV8 * fh_or_path SV * callback ALIAS: aio_stat = REQ_STAT @@ -1516,7 +1517,7 @@ void aio_unlink (pathname,callback=&PL_sv_undef) - SV * pathname + SV8 * pathname SV * callback ALIAS: aio_unlink = REQ_UNLINK @@ -1535,8 +1536,8 @@ void aio_link (oldpath,newpath,callback=&PL_sv_undef) - SV * oldpath - SV * newpath + SV8 * oldpath + SV8 * newpath SV * callback ALIAS: aio_link = REQ_LINK @@ -1557,7 +1558,7 @@ void aio_mknod (pathname,mode,dev,callback=&PL_sv_undef) - SV * pathname + SV8 * pathname SV * callback UV mode UV dev @@ -1644,18 +1645,17 @@ while (nreqs) { poll_wait (); - poll_cb (0); + poll_cb (); } -void +int poll() PROTOTYPE: CODE: - if (nreqs) - { - poll_wait (); - poll_cb (0); - } + poll_wait (); + RETVAL = poll_cb (); + OUTPUT: + RETVAL int poll_fileno() @@ -1677,8 +1677,7 @@ poll_wait() PROTOTYPE: CODE: - if (nreqs) - poll_wait (); + poll_wait (); int nreqs()