1- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.26 2001/10/01 12:02 :28 meskes Exp $ */
1+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.27 2001/10/02 14:08 :28 meskes Exp $ */
22
33/*
44 * The aim is to get a simpler inteface to the database routines.
@@ -1040,23 +1040,26 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
10401040va_list args ;
10411041struct statement * stmt ;
10421042struct connection * con = get_connection (connection_name );
1043- bool status = true ;
1044- char * locale ;
1043+ bool status ;
1044+ char * oldlocale ;
10451045
10461046/* Make sure we do NOT honor the locale for numeric input/output */
10471047/* since the database wants the standard decimal point */
1048- locale = setlocale (LC_NUMERIC ,"C" );
1048+ oldlocale = strdup (setlocale (LC_NUMERIC ,NULL ));
1049+ setlocale (LC_NUMERIC ,"C" );
10491050
10501051if (!ecpg_init (con ,connection_name ,lineno ))
10511052{
1052- setlocale (LC_NUMERIC ,locale );
1053+ setlocale (LC_NUMERIC ,oldlocale );
1054+ free (oldlocale );
10531055return (false);
10541056}
10551057
10561058va_start (args ,query );
10571059if (create_statement (lineno ,con ,& stmt ,query ,args )== false)
10581060{
1059- setlocale (LC_NUMERIC ,locale );
1061+ setlocale (LC_NUMERIC ,oldlocale );
1062+ free (oldlocale );
10601063return (false);
10611064}
10621065va_end (args );
@@ -1067,15 +1070,18 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
10671070free_statement (stmt );
10681071ECPGlog ("ECPGdo: not connected to %s\n" ,con -> name );
10691072ECPGraise (lineno ,ECPG_NOT_CONN ,NULL );
1070- setlocale (LC_NUMERIC ,locale );
1073+ setlocale (LC_NUMERIC ,oldlocale );
1074+ free (oldlocale );
10711075return false;
10721076}
10731077
10741078status = ECPGexecute (stmt );
10751079free_statement (stmt );
10761080
10771081/* and reset locale value so our application is not affected */
1078- setlocale (LC_NUMERIC ,locale );
1082+ setlocale (LC_NUMERIC ,oldlocale );
1083+ free (oldlocale );
1084+
10791085return (status );
10801086}
10811087