diff options
author | Michael Meskes <meskes@postgresql.org> | 2011-09-01 15:27:38 +0200 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2011-09-01 15:30:01 +0200 |
commit | 5ad0e899f08136a00f56bf224a6b9729b2f4c69f (patch) | |
tree | 9f2a4ff71ff5579e7e331fa336630c1965e75cbf | |
parent | 6952071450befb74ee0bc3c76c17de816cddfc43 (diff) | |
download | postgresql-5ad0e899f08136a00f56bf224a6b9729b2f4c69f.tar.gz |
In ecpglib restore LC_NUMERIC in case of an error.
-rw-r--r-- | src/interfaces/ecpg/ecpglib/execute.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index f173736757..f34ea1f3f4 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -1772,8 +1772,12 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char */ if (statement_type == ECPGst_prepnormal) { - if (!ecpg_auto_prepare(lineno, connection_name, compat, &prepname, query)) + if (!ecpg_auto_prepare(lineno, connection_name, compat, &prepname, query)) { + setlocale(LC_NUMERIC, oldlocale); + ecpg_free(oldlocale); + va_end(args); return (false); + } /* * statement is now prepared, so instead of the query we have to @@ -1800,6 +1804,9 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char else { ecpg_raise(lineno, ECPG_INVALID_STMT, ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME, stmt->command); + setlocale(LC_NUMERIC, oldlocale); + ecpg_free(oldlocale); + va_end(args); return (false); } } |