-=| 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 :)

Attachment: signature.asc
Description: Digital signature

Reply via email to