summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2002-01-12 05:11:20 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2002-01-12 05:11:20 +0000
commit5b781b5bd88f1a6304dcbbe8f741a84af480cee7 (patch)
tree12bf64fa0bceafeb075546c169e388a041509321
parente54858b049d061e51d06b86d1010dc069ad281c1 (diff)
downloadperl-5b781b5bd88f1a6304dcbbe8f741a84af480cee7.tar.gz
Andreas is busy :-)
p4raw-id: //depot/perl@14206
-rw-r--r--doop.c1
-rw-r--r--t/op/unisprintf.t15
2 files changed, 15 insertions, 1 deletions
diff --git a/doop.c b/doop.c
index 0c7abf46ca..8b02034982 100644
--- a/doop.c
+++ b/doop.c
@@ -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");
+}