--- IO-AIO/AIO.xs 2018/01/06 01:04:42 1.251 +++ IO-AIO/AIO.xs 2018/01/06 02:11:10 1.252 @@ -701,7 +701,13 @@ sv_set_foreign (req->sv2, &sysfree_vtbl, req->ptr2, req->result); } else - SvCUR_set (req->sv2, req->result); + { + SvCUR_set (req->sv2, req->result); + *SvEND (req->sv2) = 0; + SvPOK_only (req->sv2); + } + + SvSETMAGIC (req->sv2); } PUSHs (sv_result); @@ -1417,7 +1423,7 @@ { /* read: check type and grow scalar as necessary */ if (!SvPOK (data) || SvLEN (data) >= SvCUR (data)) - svptr = sv_grow (data, len + dataoffset); + svptr = sv_grow (data, len + dataoffset + 1); else if (SvCUR (data) < len + dataoffset) croak ("length + dataoffset outside of scalar, and cannot grow"); } @@ -1821,7 +1827,7 @@ if (length) /* known length, directly read into scalar */ { if (!SvPOK (data) || SvLEN (data) >= SvCUR (data)) - svptr = sv_grow (data, length); + svptr = sv_grow (data, length + 1); else if (SvCUR (data) < length) croak ("length outside of scalar, and cannot grow"); else