aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/adt/pg_locale.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index 4a2fd28f475..7112dea0e1e 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -239,7 +239,9 @@ check_locale(int category, const char *value)
/* set the locale with setlocale, to see if it accepts it. */
ret = (setlocale(category, value) != NULL);
- setlocale(category, save); /* assume this won't fail */
+ /* restore old value. */
+ if (!setlocale(category, save))
+ elog(WARNING, "failed to restore old locale");
pfree(save);
return ret;
@@ -499,13 +501,15 @@ PGLC_localeconv(void)
/* Try to restore internal settings */
if (save_lc_monetary)
{
- setlocale(LC_MONETARY, save_lc_monetary);
+ if (!setlocale(LC_MONETARY, save_lc_monetary))
+ elog(WARNING, "failed to restore old locale");
pfree(save_lc_monetary);
}
if (save_lc_numeric)
{
- setlocale(LC_NUMERIC, save_lc_numeric);
+ if (!setlocale(LC_NUMERIC, save_lc_numeric))
+ elog(WARNING, "failed to restore old locale");
pfree(save_lc_numeric);
}
@@ -513,7 +517,8 @@ PGLC_localeconv(void)
/* Try to restore internal ctype settings */
if (save_lc_ctype)
{
- setlocale(LC_CTYPE, save_lc_ctype);
+ if (!setlocale(LC_CTYPE, save_lc_ctype))
+ elog(WARNING, "failed to restore old locale");
pfree(save_lc_ctype);
}
#endif
@@ -674,7 +679,8 @@ cache_locale_time(void)
/* try to restore internal settings */
if (save_lc_time)
{
- setlocale(LC_TIME, save_lc_time);
+ if (!setlocale(LC_TIME, save_lc_time))
+ elog(WARNING, "failed to restore old locale");
pfree(save_lc_time);
}
@@ -682,7 +688,8 @@ cache_locale_time(void)
/* try to restore internal ctype settings */
if (save_lc_ctype)
{
- setlocale(LC_CTYPE, save_lc_ctype);
+ if (!setlocale(LC_CTYPE, save_lc_ctype))
+ elog(WARNING, "failed to restore old locale");
pfree(save_lc_ctype);
}
#endif