--- IO-AIO/AIO.xs 2006/10/22 21:13:47 1.50 +++ IO-AIO/AIO.xs 2006/10/22 22:14:33 1.51 @@ -272,16 +272,16 @@ call_sv (req->callback, G_VOID | G_EVAL); SPAGAIN; + FREETMPS; + LEAVE; + + errno = errorno; + if (SvTRUE (ERRSV)) { req_free (req); croak (0); } - - FREETMPS; - LEAVE; - - errno = errorno; } static void req_free (aio_req req) @@ -834,6 +834,7 @@ req->next = 0; + printf ("queue rese %p\n", rese);//D if (rese) { rese->next = req; @@ -1307,6 +1308,20 @@ } void +result (aio_req grp, ...) + CODE: +{ + int i; + AV *av = newAV (); + + for (i = 1; i < items; ++i ) + av_push (av, newSVsv (ST (i))); + + SvREFCNT_dec (grp->data); + grp->data = (SV *)av; +} + +void lock (aio_req grp) CODE: ++grp->length;