diff options
Diffstat (limited to 'universal.c')
-rw-r--r-- | universal.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/universal.c b/universal.c index 145d860bc6..a8113d0e6c 100644 --- a/universal.c +++ b/universal.c @@ -695,7 +695,9 @@ XS(XS_utf8_decode) croak_xs_usage(cv, "sv"); else { SV * const sv = ST(0); - const bool RETVAL = sv_utf8_decode(sv); + bool RETVAL; + if (SvIsCOW(sv)) sv_force_normal(sv); + RETVAL = sv_utf8_decode(sv); ST(0) = boolSV(RETVAL); sv_2mortal(ST(0)); } |