summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2000-05-07 19:47:07 +0000
committerGurusamy Sarathy <gsar@cpan.org>2000-05-07 19:47:07 +0000
commite84ff256a2982e8c96a05c380a48c0d1a6cb3af9 (patch)
tree565cc125982c986c2c93e9eb6abd8d5d5bd39909 /sv.c
parent7494063982d7975076fa26eea0959791b05a536a (diff)
downloadperl-e84ff256a2982e8c96a05c380a48c0d1a6cb3af9.tar.gz
concat doesn't preserve utf8-ness, and doesn't invalidate
[NI]OK; added tests for both p4raw-id: //depot/perl@6090
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sv.c b/sv.c
index a5cb9e63f6..fb68efae2f 100644
--- a/sv.c
+++ b/sv.c
@@ -3104,11 +3104,13 @@ Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr)
if (!sstr)
return;
if ((s = SvPV(sstr, len))) {
- if (SvUTF8(sstr))
+ if (DO_UTF8(sstr)) {
sv_utf8_upgrade(dstr);
- sv_catpvn(dstr,s,len);
- if (SvUTF8(sstr))
+ sv_catpvn(dstr,s,len);
SvUTF8_on(dstr);
+ }
+ else
+ sv_catpvn(dstr,s,len);
}
}
@@ -3465,6 +3467,7 @@ Perl_sv_insert(pTHX_ SV *bigstr, STRLEN offset, STRLEN len, char *little, STRLEN
if (!bigstr)
Perl_croak(aTHX_ "Can't modify non-existent substring");
SvPV_force(bigstr, curlen);
+ SvPOK_only_UTF8(bigstr);
if (offset + len > curlen) {
SvGROW(bigstr, offset+len+1);
Zero(SvPVX(bigstr)+curlen, offset+len-curlen, char);