r20189 - gnucash/trunk/src/backend/dbi - Handle localization-ignorance bug in libdbi by setting LC_NUMERIC locale

John Ralls jralls at code.gnucash.org
Fri Jan 28 16:35:50 EST 2011


Author: jralls
Date: 2011-01-28 16:35:50 -0500 (Fri, 28 Jan 2011)
New Revision: 20189
Trac: http://svn.gnucash.org/trac/changeset/20189

Modified:
   gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
Log:
Handle localization-ignorance bug in libdbi by setting LC_NUMERIC locale 
to "C" before calling dbi_result_get_double() and back afterwards. This 
is not thread-safe, but we're not multithreaded yet.
 


Modified: gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
===================================================================
--- gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2011-01-28 21:03:40 UTC (rev 20188)
+++ gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2011-01-28 21:35:50 UTC (rev 20189)
@@ -2899,9 +2899,12 @@
     }
     while ( dbi_result_next_row( result ))
     {
+	const char *locale = setlocale( LC_NUMERIC, "" );
+	setlocale( LC_NUMERIC, "C");
         resultlonglong = dbi_result_get_longlong( result, "test_int" );
         resultulonglong = dbi_result_get_ulonglong( result, "test_unsigned" );
         resultdouble = dbi_result_get_double( result, "test_double" );
+	setlocale (LC_NUMERIC, locale );
     }
     if ( testlonglong != resultlonglong )
     {



More information about the gnucash-changes mailing list