diff options
-rw-r--r-- | ext/Encode/Encode.xs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ext/Encode/Encode.xs b/ext/Encode/Encode.xs index 8fb41063aa..e4f7b10cbd 100644 --- a/ext/Encode/Encode.xs +++ b/ext/Encode/Encode.xs @@ -576,7 +576,15 @@ encode_method(pTHX_ encode_t * enc, encpage_t * dir, SV * src, if (check) { sdone = SvCUR(src) - (slen+sdone); if (sdone) { +#if 1 + /* FIXME: A Move() is dangerous - PV could be mmap'ed readonly + SvOOK would be ideal - but sv_backoff does not understand SvLEN == 0 + type SVs and sv_clear() calls it ... + */ + sv_setpvn(src,s+slen,sdone); +#else Move(s + slen, SvPVX(src), sdone , U8); +#endif } SvCUR_set(src, sdone); } |