… | |
… | |
353 | /* do not recreate the result IV from scratch each time */ |
353 | /* do not recreate the result IV from scratch each time */ |
354 | if (expect_true (sv_result_cache)) |
354 | if (expect_true (sv_result_cache)) |
355 | { |
355 | { |
356 | sv_result = sv_result_cache; sv_result_cache = 0; |
356 | sv_result = sv_result_cache; sv_result_cache = 0; |
357 | SvIV_set (sv_result, req->result); |
357 | SvIV_set (sv_result, req->result); |
|
|
358 | SvIOK_only (sv_result); |
358 | } |
359 | } |
359 | else |
360 | else |
360 | { |
361 | { |
361 | sv_result = newSViv (req->result); |
362 | sv_result = newSViv (req->result); |
362 | SvREADONLY_on (sv_result); |
363 | SvREADONLY_on (sv_result); |
… | |
… | |
526 | SvSETMAGIC (req->sv2); |
527 | SvSETMAGIC (req->sv2); |
527 | PUSHs (sv_result); |
528 | PUSHs (sv_result); |
528 | } |
529 | } |
529 | break; |
530 | break; |
530 | |
531 | |
531 | case EIO_DUP2: /* EIO_DUP2 actually means aio_close(), su fudge result value */ |
532 | case EIO_DUP2: /* EIO_DUP2 actually means aio_close(), so fudge result value */ |
532 | if (req->result > 0) |
533 | if (req->result > 0) |
533 | SvIV_set (sv_result, 0); |
534 | SvIV_set (sv_result, 0); |
534 | /* FALLTHROUGH */ |
535 | /* FALLTHROUGH */ |
535 | |
536 | |
536 | default: |
537 | default: |