From beb71cd7edbe24b91f06a00a4690f7e460eb2b5a Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 30 Mar 2009 04:45:40 +0000 Subject: [PATCH] (trunk) make tr_bencGetReal() work better in i18n settings --- libtransmission/bencode.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libtransmission/bencode.c b/libtransmission/bencode.c index a01a7f618..c4571a542 100644 --- a/libtransmission/bencode.c +++ b/libtransmission/bencode.c @@ -458,7 +458,16 @@ tr_bencGetReal( const tr_benc * val, double * setme ) if( !success && tr_bencIsString(val) ) { char * endptr; - const double d = strtod( val->val.s.s, &endptr ); + char * locale; + double d; + + /* the json spec requires a '.' decimal point regardless of locale */ + locale = tr_strdup( setlocale ( LC_NUMERIC, NULL ) ); + setlocale( LC_NUMERIC, "POSIX" ); + d = strtod( val->val.s.s, &endptr ); + setlocale( LC_NUMERIC, locale ); + tr_free( locale ); + if(( success = ( val->val.s.s != endptr ) && !*endptr )) *setme = d; } -- 2.40.0