]> granicus.if.org Git - postgresql/commitdiff
Re-added Tom's patch fixing my setlocale patch. I accidently
authorMichael Meskes <meskes@postgresql.org>
Tue, 2 Oct 2001 14:08:28 +0000 (14:08 +0000)
committerMichael Meskes <meskes@postgresql.org>
Tue, 2 Oct 2001 14:08:28 +0000 (14:08 +0000)
deleted it.

src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/lib/execute.c

index 668bc986a8030ce4ae40d25218ff8615ad1e26f3..4ef1df0a423f8bba7f5b00003b084b8f816f1d50 100644 (file)
@@ -1107,5 +1107,10 @@ Mon Okt  1 13:49:40 CEST 2001
        - Fixed truncate bug.
        - Added patch by Christof Petig <christof.petig@wtal.de> to clean up
          ecpglib.
+
+TUe Okt  2 16:09:26 CEST 2001
+
+       - Re-added Tom's patch fixing my setlocale patch. I accidently
+         deleted it.
        - Set ecpg version to 2.9.0.
         - Set library version to 3.3.0.
index c696afe54b6dcca38f4624528d2504fe958cd0c8..091e83fc96ee64e3cd904f9207875ed1b2e4c4c8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.26 2001/10/01 12:02:28 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.27 2001/10/02 14:08:28 meskes Exp $ */
 
 /*
  * 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,...)
        va_list         args;
        struct statement *stmt;
        struct connection *con = get_connection(connection_name);
-       bool            status = true;
-       char            *locale;
+       bool            status;
+       char            *oldlocale;
 
        /* Make sure we do NOT honor the locale for numeric input/output */
        /* since the database wants the standard decimal point */
-       locale = setlocale(LC_NUMERIC, "C");
+       oldlocale = strdup(setlocale(LC_NUMERIC, NULL));
+       setlocale(LC_NUMERIC, "C");
 
        if (!ecpg_init(con, connection_name, lineno))
        {
-               setlocale(LC_NUMERIC, locale);
+               setlocale(LC_NUMERIC, oldlocale);
+               free(oldlocale);
                return (false);
        }
 
        va_start(args, query);
        if (create_statement(lineno, con, &stmt, query, args) == false)
        {
-               setlocale(LC_NUMERIC, locale);
+               setlocale(LC_NUMERIC, oldlocale);
+               free(oldlocale);
                return (false);
        }
        va_end(args);
@@ -1067,7 +1070,8 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
                free_statement(stmt);
                ECPGlog("ECPGdo: not connected to %s\n", con->name);
                ECPGraise(lineno, ECPG_NOT_CONN, NULL);
-               setlocale(LC_NUMERIC, locale);
+               setlocale(LC_NUMERIC, oldlocale);
+               free(oldlocale);
                return false;
        }
 
@@ -1075,7 +1079,9 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
        free_statement(stmt);
 
        /* and reset locale value so our application is not affected */
-       setlocale(LC_NUMERIC, locale);
+       setlocale(LC_NUMERIC, oldlocale);
+       free(oldlocale);
+
        return (status);
 }