Index: ChangeLog =================================================================== --- ChangeLog (revision 852) +++ ChangeLog (working copy) @@ -8,6 +8,8 @@ applications, in order to work around a bug in ADO. (Bug #13776) Bugs fixed: + * The non-portable "English" locale was used for handling of decimal + and floating-point values instead of "C". (Bug #32294) * The wrong result was returned by SQLGetData() when the data was an empty string and a zero-sized buffer was specified. (Bug #30958) Index: driver/results.c =================================================================== --- driver/results.c (revision 844) +++ driver/results.c (working copy) @@ -1073,7 +1073,7 @@ } if ( !(stmt->dbc->flag & FLAG_NO_LOCALE) ) - setlocale(LC_NUMERIC,"English"); + setlocale(LC_NUMERIC, "C"); result= sql_get_data( stmt, (SQLSMALLINT) (fCType == SQL_C_DEFAULT ? stmt->odbc_types[icol] : fCType), stmt->result->fields+icol, @@ -1346,7 +1346,7 @@ } if ( !(stmt->dbc->flag & FLAG_NO_LOCALE) ) - setlocale(LC_NUMERIC,"English"); + setlocale(LC_NUMERIC, "C"); res= SQL_SUCCESS; for ( i= 0 ; i < rows_to_fetch ; i++ ) { Index: driver/execute.c =================================================================== --- driver/execute.c (revision 844) +++ driver/execute.c (working copy) @@ -189,7 +189,7 @@ net= &stmt->dbc->mysql.net; to= (char*) net->buff; if ( !(stmt->dbc->flag & FLAG_NO_LOCALE) ) - setlocale(LC_NUMERIC,"English"); /* force use of '.' as decimal point */ + setlocale(LC_NUMERIC, "C"); /* force use of '.' as decimal point */ for ( i= 0; i < stmt->param_count; i++ ) { PARAM_BIND *param= dynamic_element(&stmt->params,i,PARAM_BIND*);