… | |
… | |
270 | |
270 | |
271 | PUTBACK; |
271 | PUTBACK; |
272 | call_sv (req->callback, G_VOID | G_EVAL); |
272 | call_sv (req->callback, G_VOID | G_EVAL); |
273 | SPAGAIN; |
273 | SPAGAIN; |
274 | |
274 | |
|
|
275 | FREETMPS; |
|
|
276 | LEAVE; |
|
|
277 | |
|
|
278 | errno = errorno; |
|
|
279 | |
275 | if (SvTRUE (ERRSV)) |
280 | if (SvTRUE (ERRSV)) |
276 | { |
281 | { |
277 | req_free (req); |
282 | req_free (req); |
278 | croak (0); |
283 | croak (0); |
279 | } |
284 | } |
280 | |
|
|
281 | FREETMPS; |
|
|
282 | LEAVE; |
|
|
283 | |
|
|
284 | errno = errorno; |
|
|
285 | } |
285 | } |
286 | |
286 | |
287 | static void req_free (aio_req req) |
287 | static void req_free (aio_req req) |
288 | { |
288 | { |
289 | if (req->grp) |
289 | if (req->grp) |
… | |
… | |
1305 | } |
1305 | } |
1306 | } |
1306 | } |
1307 | } |
1307 | } |
1308 | |
1308 | |
1309 | void |
1309 | void |
|
|
1310 | result (aio_req grp, ...) |
|
|
1311 | CODE: |
|
|
1312 | { |
|
|
1313 | int i; |
|
|
1314 | AV *av = newAV (); |
|
|
1315 | |
|
|
1316 | for (i = 1; i < items; ++i ) |
|
|
1317 | av_push (av, newSVsv (ST (i))); |
|
|
1318 | |
|
|
1319 | SvREFCNT_dec (grp->data); |
|
|
1320 | grp->data = (SV *)av; |
|
|
1321 | } |
|
|
1322 | |
|
|
1323 | void |
1310 | lock (aio_req grp) |
1324 | lock (aio_req grp) |
1311 | CODE: |
1325 | CODE: |
1312 | ++grp->length; |
1326 | ++grp->length; |
1313 | |
1327 | |
1314 | void |
1328 | void |