diff options
author | Nicholas Clark <nick@ccl4.org> | 2004-03-07 21:34:01 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2004-03-07 21:34:01 +0000 |
commit | 5fec3b1d36062f79cb996123dc191025c139d617 (patch) | |
tree | 6e5d309c1f9d0eda77a6f40e73c290a0a156ca66 /sv.c | |
parent | 076d9a11d18d650bf0992032a42c6e83fb1c2ea6 (diff) | |
download | perl-5fec3b1d36062f79cb996123dc191025c139d617.tar.gz |
Add a readonly check to Perl_sv_utf8_upgrade_flags, a regresion test
in utf8.t, and fix 3 bugs it exposed in utfhash.t
p4raw-id: //depot/perl@22463
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -3470,12 +3470,16 @@ Perl_sv_utf8_upgrade_flags(pTHX_ register SV *sv, I32 flags) return len; } + if (SvUTF8(sv)) + return SvCUR(sv); + if (SvIsCOW(sv)) { sv_force_normal_flags(sv, 0); } - if (SvUTF8(sv)) - return SvCUR(sv); + if (SvREADONLY(sv)) { + Perl_croak(aTHX_ PL_no_modify); + } if (PL_encoding && !(flags & SV_UTF8_NO_ENCODING)) sv_recode_to_utf8(sv, PL_encoding); |