diff options
Diffstat (limited to 'src/backend/utils/adt/pg_locale.c')
-rw-r--r-- | src/backend/utils/adt/pg_locale.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index 12419fc8df9..9500c6b39f8 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -1227,13 +1227,18 @@ lc_ctype_is_c(Oid collation) static void report_newlocale_failure(const char *localename) { - /* copy errno in case one of the ereport auxiliary functions changes it */ - int save_errno = errno; + int save_errno; + + /* On Windows, transform _create_locale() error to errno */ +#ifdef WIN32 + _dosmaperr(GetLastError()); +#endif /* * ENOENT means "no such locale", not "no such file", so clarify that * errno with an errdetail message. */ + save_errno = errno; /* auxiliary funcs might change errno */ ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("could not create locale \"%s\": %m", |