This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
was: [ANNOUNCE] ExtUtils::MakeMaker 5.48_03
[perl5.git]
/
doop.c
diff --git
a/doop.c
b/doop.c
index
bc77201
..
8b02034
100644
(file)
--- a/
doop.c
+++ b/
doop.c
@@
-697,6
+697,9
@@
Perl_do_sprintf(pTHX_ SV *sv, I32 len, SV **sarg)
char *pat = SvPV(*sarg, patlen);
bool do_taint = FALSE;
char *pat = SvPV(*sarg, patlen);
bool do_taint = FALSE;
+ SvUTF8_off(sv);
+ if (DO_UTF8(*sarg))
+ SvUTF8_on(sv);
sv_vsetpvfn(sv, pat, patlen, Null(va_list*), sarg + 1, len - 1, &do_taint);
SvSETMAGIC(sv);
if (do_taint)
sv_vsetpvfn(sv, pat, patlen, Null(va_list*), sarg + 1, len - 1, &do_taint);
SvSETMAGIC(sv);
if (do_taint)
@@
-950,8
+953,14
@@
Perl_do_chop(pTHX_ register SV *astr, register SV *sv)
do_chop(astr,hv_iterval(hv,entry));
return;
}
do_chop(astr,hv_iterval(hv,entry));
return;
}
- else if (SvREADONLY(sv))
- Perl_croak(aTHX_ PL_no_modify);
+ else if (SvREADONLY(sv)) {
+ if (SvFAKE(sv)) {
+ /* SV is copy-on-write */
+ sv_force_normal_flags(sv, 0);
+ }
+ if (SvREADONLY(sv))
+ Perl_croak(aTHX_ PL_no_modify);
+ }
s = SvPV(sv, len);
if (len && !SvPOK(sv))
s = SvPV_force(sv, len);
s = SvPV(sv, len);
if (len && !SvPOK(sv))
s = SvPV_force(sv, len);
@@
-1020,8
+1029,14
@@
Perl_do_chomp(pTHX_ register SV *sv)
count += do_chomp(hv_iterval(hv,entry));
return count;
}
count += do_chomp(hv_iterval(hv,entry));
return count;
}
- else if (SvREADONLY(sv))
- Perl_croak(aTHX_ PL_no_modify);
+ else if (SvREADONLY(sv)) {
+ if (SvFAKE(sv)) {
+ /* SV is copy-on-write */
+ sv_force_normal_flags(sv, 0);
+ }
+ if (SvREADONLY(sv))
+ Perl_croak(aTHX_ PL_no_modify);
+ }
s = SvPV(sv, len);
if (s && len) {
s += --len;
s = SvPV(sv, len);
if (s && len) {
s += --len;