diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2002-01-12 05:11:20 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-01-12 05:11:20 +0000 |
commit | 5b781b5bd88f1a6304dcbbe8f741a84af480cee7 (patch) | |
tree | 12bf64fa0bceafeb075546c169e388a041509321 | |
parent | e54858b049d061e51d06b86d1010dc069ad281c1 (diff) | |
download | perl-5b781b5bd88f1a6304dcbbe8f741a84af480cee7.tar.gz |
Andreas is busy :-)
p4raw-id: //depot/perl@14206
-rw-r--r-- | doop.c | 1 | ||||
-rw-r--r-- | t/op/unisprintf.t | 15 |
2 files changed, 15 insertions, 1 deletions
@@ -697,6 +697,7 @@ Perl_do_sprintf(pTHX_ SV *sv, I32 len, SV **sarg) 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); diff --git a/t/op/unisprintf.t b/t/op/unisprintf.t index 5c9bbb0a47..3c5f574b62 100644 --- a/t/op/unisprintf.t +++ b/t/op/unisprintf.t @@ -6,7 +6,7 @@ BEGIN { require "test.pl"; } -plan tests => 23; +plan tests => 25; $a = "B\x{fc}f"; $b = "G\x{100}r"; @@ -124,3 +124,16 @@ $c = 0x200; is((sprintf "%x %x %d", unpack("U*", $a), length($a)), "1234 5678 2", '\x{1234}%s \x{5678}'); } + +{ + # check that utf8ness doesn't "accumulate" + + my $w = "w\x{fc}"; + my $sprintf; + + $sprintf = sprintf "%s%s", $w, "$w\x{100}"; + is(substr($sprintf,0,2), $w, "utf8 echo"); + + $sprintf = sprintf "%s%s", $w, "$w\x{100}"; + is(substr($sprintf,0,2), $w, "utf8 echo echo"); +} |