… | |
… | |
699 | { |
699 | { |
700 | req->flags &= ~EIO_FLAG_PTR2_FREE; |
700 | req->flags &= ~EIO_FLAG_PTR2_FREE; |
701 | sv_set_foreign (req->sv2, &sysfree_vtbl, req->ptr2, req->result); |
701 | sv_set_foreign (req->sv2, &sysfree_vtbl, req->ptr2, req->result); |
702 | } |
702 | } |
703 | else |
703 | else |
|
|
704 | { |
704 | SvCUR_set (req->sv2, req->result); |
705 | SvCUR_set (req->sv2, req->result); |
|
|
706 | *SvEND (req->sv2) = 0; |
|
|
707 | SvPOK_only (req->sv2); |
|
|
708 | } |
|
|
709 | |
|
|
710 | SvSETMAGIC (req->sv2); |
705 | } |
711 | } |
706 | |
712 | |
707 | PUSHs (sv_result); |
713 | PUSHs (sv_result); |
708 | } |
714 | } |
709 | break; |
715 | break; |
… | |
… | |
1415 | } |
1421 | } |
1416 | else |
1422 | else |
1417 | { |
1423 | { |
1418 | /* read: check type and grow scalar as necessary */ |
1424 | /* read: check type and grow scalar as necessary */ |
1419 | if (!SvPOK (data) || SvLEN (data) >= SvCUR (data)) |
1425 | if (!SvPOK (data) || SvLEN (data) >= SvCUR (data)) |
1420 | svptr = sv_grow (data, len + dataoffset); |
1426 | svptr = sv_grow (data, len + dataoffset + 1); |
1421 | else if (SvCUR (data) < len + dataoffset) |
1427 | else if (SvCUR (data) < len + dataoffset) |
1422 | croak ("length + dataoffset outside of scalar, and cannot grow"); |
1428 | croak ("length + dataoffset outside of scalar, and cannot grow"); |
1423 | } |
1429 | } |
1424 | |
1430 | |
1425 | { |
1431 | { |
… | |
… | |
1819 | sv_clear_foreign (data); |
1825 | sv_clear_foreign (data); |
1820 | |
1826 | |
1821 | if (length) /* known length, directly read into scalar */ |
1827 | if (length) /* known length, directly read into scalar */ |
1822 | { |
1828 | { |
1823 | if (!SvPOK (data) || SvLEN (data) >= SvCUR (data)) |
1829 | if (!SvPOK (data) || SvLEN (data) >= SvCUR (data)) |
1824 | svptr = sv_grow (data, length); |
1830 | svptr = sv_grow (data, length + 1); |
1825 | else if (SvCUR (data) < length) |
1831 | else if (SvCUR (data) < length) |
1826 | croak ("length outside of scalar, and cannot grow"); |
1832 | croak ("length outside of scalar, and cannot grow"); |
1827 | else |
1833 | else |
1828 | svptr = SvPVbyte_nolen (data); |
1834 | svptr = SvPVbyte_nolen (data); |
1829 | } |
1835 | } |