From: Jarkko Hietaniemi Date: Thu, 16 Aug 2001 11:46:02 +0000 (+0000) Subject: Fix for 20010407.008 sprintf removes utf8-ness. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=6ee35fb7e604a038209f7db33f1e4817a38d5c05;p=p5sagit%2Fp5-mst-13.2.git Fix for 20010407.008 sprintf removes utf8-ness. p4raw-id: //depot/perl@11691 --- diff --git a/pp.c b/pp.c index ee9d47e..c0148b3 100644 --- a/pp.c +++ b/pp.c @@ -2933,6 +2933,8 @@ PP(pp_sprintf) dSP; dMARK; dORIGMARK; dTARGET; do_sprintf(TARG, SP-MARK, MARK+1); TAINT_IF(SvTAINTED(TARG)); + if (DO_UTF8(*(MARK+1))) + SvUTF8_on(TARG); SP = ORIGMARK; PUSHTARG; RETURN; diff --git a/t/op/misc.t b/t/op/misc.t index e7f1623..e55e18a 100755 --- a/t/op/misc.t +++ b/t/op/misc.t @@ -724,9 +724,14 @@ sub DESTROY { EXPECT Bar=ARRAY(0x...) ######## -printf "%x %x", unpack "U*", sprintf "\x{1234}%s", "\x{5678}" -EXPECT -1234 5678 +# 20010407.008 sprintf removes utf8-ness +$a = sprintf "\x{1234}"; +printf "%x %d\n", unpack("U*", $a), length($a); +$a = sprintf "\x{1234}%s", "\x{5678}"; +printf "%x %x %d\n", unpack("U*", $a), length($a); +EXPECT +1234 1 +1234 5678 2 ######## # keep this last - doesn't seem to work otherwise? eval "a.b.c.d.e.f;sub"