-=| Niko Tyni, Wed, Oct 27, 2010 at 11:28:42AM +0300 |=- > 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.)
bg_BG too. I guess any locale that uses decimal separator other than period is affected. That's a lot of users :) > 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. Hm, can I convince you that it is worth an upload all by itself? :) I remember being bitten by that behaviour, but can't remember details. Now that the fix is known, I'd greatly appreciate if I don't have to remember to avoid such constructs until wheezy comes out :)
signature.asc
Description: Digital signature