1
- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.24 2001/09/25 18:37:17 meskes Exp $ */
1
+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.25 2001/09/29 20:12:07 tgl Exp $ */
2
2
3
3
/*
4
4
* The aim is to get a simpler inteface to the database routines.
@@ -1006,23 +1006,26 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
1006
1006
va_list args ;
1007
1007
struct statement * stmt ;
1008
1008
struct connection * con = get_connection (connection_name );
1009
- bool status = true ;
1010
- char * locale ;
1009
+ bool status ;
1010
+ char * oldlocale ;
1011
1011
1012
1012
/* Make sure we do NOT honor the locale for numeric input/output */
1013
1013
/* since the database wants the standard decimal point */
1014
- locale = setlocale (LC_NUMERIC , "C" );
1014
+ oldlocale = strdup (setlocale (LC_NUMERIC , NULL ));
1015
+ setlocale (LC_NUMERIC , "C" );
1015
1016
1016
1017
if (!ecpg_init (con , connection_name , lineno ))
1017
1018
{
1018
- setlocale (LC_NUMERIC , locale );
1019
+ setlocale (LC_NUMERIC , oldlocale );
1020
+ free (oldlocale );
1019
1021
return (false);
1020
1022
}
1021
1023
1022
1024
va_start (args , query );
1023
1025
if (create_statement (lineno , con , & stmt , query , args ) == false)
1024
1026
{
1025
- setlocale (LC_NUMERIC , locale );
1027
+ setlocale (LC_NUMERIC , oldlocale );
1028
+ free (oldlocale );
1026
1029
return (false);
1027
1030
}
1028
1031
va_end (args );
@@ -1033,15 +1036,18 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
1033
1036
free_statement (stmt );
1034
1037
ECPGlog ("ECPGdo: not connected to %s\n" , con -> name );
1035
1038
ECPGraise (lineno , ECPG_NOT_CONN , NULL );
1036
- setlocale (LC_NUMERIC , locale );
1039
+ setlocale (LC_NUMERIC , oldlocale );
1040
+ free (oldlocale );
1037
1041
return false;
1038
1042
}
1039
1043
1040
1044
status = ECPGexecute (stmt );
1041
1045
free_statement (stmt );
1042
1046
1043
1047
/* and reset locale value so our application is not affected */
1044
- setlocale (LC_NUMERIC , locale );
1048
+ setlocale (LC_NUMERIC , oldlocale );
1049
+ free (oldlocale );
1050
+
1045
1051
return (status );
1046
1052
}
1047
1053
0 commit comments