Package: perl Version: 5.10.1-1 Tags: patch Forwarded: http://rt.perl.org/rt3/Ticket/Display.html?id=78632
A regression in 5.10.1 breaks sprintf and LC_NUMERIC with numeric constants: perl -Mlocale -MPOSIX=locale_h -e 'setlocale(LC_NUMERIC, "fi_FI") or die; printf("%s should be %g\n", spr intf("%g", 2.4), 2.4)' 2.4 should be 2,4 (At least de_DE and sv_SE should also do for the locale.) The bug is with constant folding, this works: perl -Mlocale -MPOSIX=locale_h -e 'setlocale(LC_NUMERIC, "fi_FI") or die; $in = 2.4; printf("%s should be %g\n", sprintf("%g", $in), 2.4)' 2,4 should be 2,4 This is [perl #78632]. One line patch that disables sprintf() constant folding when locales are involved: diff --git a/op.c b/op.c index dc9fd64..a2481af 100644 --- a/op.c +++ b/op.c @@ -2466,6 +2466,7 @@ Perl_fold_constants(pTHX_ register OP *o) case OP_SLE: case OP_SGE: case OP_SCMP: + case OP_SPRINTF: /* XXX what about the numeric ops? */ if (PL_hints & HINT_LOCALE) goto nope; I think this is a possible candidate for squeeze but may not worth an upload by itself. -- Niko Tyni nt...@debian.org -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org