summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2004-03-07 21:34:01 +0000
committerNicholas Clark <nick@ccl4.org>2004-03-07 21:34:01 +0000
commit5fec3b1d36062f79cb996123dc191025c139d617 (patch)
tree6e5d309c1f9d0eda77a6f40e73c290a0a156ca66 /sv.c
parent076d9a11d18d650bf0992032a42c6e83fb1c2ea6 (diff)
downloadperl-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.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sv.c b/sv.c
index f8bd40898d..e49ac5ec00 100644
--- a/sv.c
+++ b/sv.c
@@ -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);