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 $ */
22
33/*
44 * 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,...)
10061006va_list args ;
10071007struct statement * stmt ;
10081008struct connection * con = get_connection (connection_name );
1009- bool status = true ;
1010- char * locale ;
1009+ bool status ;
1010+ char * oldlocale ;
10111011
10121012/* Make sure we do NOT honor the locale for numeric input/output */
10131013/* 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" );
10151016
10161017if (!ecpg_init (con ,connection_name ,lineno ))
10171018{
1018- setlocale (LC_NUMERIC ,locale );
1019+ setlocale (LC_NUMERIC ,oldlocale );
1020+ free (oldlocale );
10191021return (false);
10201022}
10211023
10221024va_start (args ,query );
10231025if (create_statement (lineno ,con ,& stmt ,query ,args )== false)
10241026{
1025- setlocale (LC_NUMERIC ,locale );
1027+ setlocale (LC_NUMERIC ,oldlocale );
1028+ free (oldlocale );
10261029return (false);
10271030}
10281031va_end (args );
@@ -1033,15 +1036,18 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
10331036free_statement (stmt );
10341037ECPGlog ("ECPGdo: not connected to %s\n" ,con -> name );
10351038ECPGraise (lineno ,ECPG_NOT_CONN ,NULL );
1036- setlocale (LC_NUMERIC ,locale );
1039+ setlocale (LC_NUMERIC ,oldlocale );
1040+ free (oldlocale );
10371041return false;
10381042}
10391043
10401044status = ECPGexecute (stmt );
10411045free_statement (stmt );
10421046
10431047/* and reset locale value so our application is not affected */
1044- setlocale (LC_NUMERIC ,locale );
1048+ setlocale (LC_NUMERIC ,oldlocale );
1049+ free (oldlocale );
1050+
10451051return (status );
10461052}
10471053