In ecpglib restore LC_NUMERIC in case of an error.

This commit is contained in:
Michael Meskes 2011-09-01 15:27:38 +02:00
parent 48fb49e394
commit 63d06ef591
1 changed files with 8 additions and 1 deletions

View File

@ -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);
}
}