> On Sun, 31 Jan 2010, james morris wrote:
>> Generally, changing locale locally is fragile and better avoided.
>>
>> I've tried the above out by storing the current locale setting, changing
>> it to "C" and then restoring the locale setting once read/write is
>> finished and it seems to work (I installed a locale using commas as
>> decimal point).
>>
>> But I was told not to do this (on stackoverflow), but without the reason
>> why - and to use ieee754.h (which is no good considering I'm mainly
>> using MPFR).
>>
>> Why is store/change/restore of locale bad?

> There's nothing at all wrong with it in the context you specified
> -- i.e. you want to ensure that floating-point values written to
> and read from file always use '.' as the decimal separator. I do
> that in my app, gretl (also for reasons of portability).

The problem would be the potential that the library may have cached locale 
features under a different locale, wouldn't it?  That could lead to either 
uninitialised bytes, or buffer overrun.

>From personal experience; I've first-use-allocated strings with all the 
>thousands characters, and an array of byte offsets at which to put the higher 
>portions of numbers, and then used a regular floating point format to write 
>the last thousand (sprintf comes to mind).  If the locale were to unexpectedly 
>change to one that uses a multi-byte decimal point, a buffer overrun would 
>certainly occur.  In the opposing case, that same function would likely write 
>out a null character following the number.

Could cause quite some stress.


Fredderic

------------------------------------------------------------
Best Weight Loss Program - Click Here!
Weight Loss Program
http://tagline.excite.com/c?cp=vXYG-fGF-EFlsgtFzMFtVgAAKZSqLQhMVy_O-FcGiDoF0G0BAAYAAAAAAAAAAAAAAAAAAADNAAAAAAAAAAAAAAAAAAAEUkgwwww=
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to