From 1ae4bc42808111d6b3f50c063de102f162051986 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 28 Jul 2013 03:41:01 -0400 Subject: [PATCH] fix semantically incorrect use of LC_GLOBAL_LOCALE LC_GLOBAL_LOCALE refers to the global locale, controlled by setlocale, not the thread-local locale in effect which these functions should be using. neither LC_GLOBAL_LOCALE nor 0 has an argument to the *_l functions has behavior defined by the standard, but 0 is a more logical choice for requesting the callee to lookup the current locale. in the future I may move the current locale lookup the the caller (the non-_l-suffixed wrapper). at this point, all of the locale logic is dummied out, so no harm was done, but it should at least avoid misleading usage. --- src/locale/langinfo.c | 2 +- src/locale/strcoll.c | 2 +- src/locale/strxfrm.c | 2 +- src/locale/wcscoll.c | 2 +- src/locale/wcsxfrm.c | 2 +- src/time/strftime.c | 2 +- src/time/wcsftime.c | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/locale/langinfo.c b/src/locale/langinfo.c index b4d53744..7bb56eed 100644 --- a/src/locale/langinfo.c +++ b/src/locale/langinfo.c @@ -60,7 +60,7 @@ char *__nl_langinfo_l(nl_item item, locale_t loc) char *__nl_langinfo(nl_item item) { - return __nl_langinfo_l(item, LC_GLOBAL_LOCALE); + return __nl_langinfo_l(item, 0); } weak_alias(__nl_langinfo, nl_langinfo); diff --git a/src/locale/strcoll.c b/src/locale/strcoll.c index 8b84b1e6..39ea1123 100644 --- a/src/locale/strcoll.c +++ b/src/locale/strcoll.c @@ -9,7 +9,7 @@ int __strcoll_l(const char *l, const char *r, locale_t loc) int strcoll(const char *l, const char *r) { - return __strcoll_l(l, r, LC_GLOBAL_LOCALE); + return __strcoll_l(l, r, 0); } weak_alias(__strcoll_l, strcoll_l); diff --git a/src/locale/strxfrm.c b/src/locale/strxfrm.c index 0ca9b071..32c46193 100644 --- a/src/locale/strxfrm.c +++ b/src/locale/strxfrm.c @@ -12,7 +12,7 @@ size_t __strxfrm_l(char *restrict dest, const char *restrict src, size_t n, loca size_t strxfrm(char *restrict dest, const char *restrict src, size_t n) { - return __strxfrm_l(dest, src, n, LC_GLOBAL_LOCALE); + return __strxfrm_l(dest, src, n, 0); } weak_alias(__strxfrm_l, strxfrm_l); diff --git a/src/locale/wcscoll.c b/src/locale/wcscoll.c index 95a4ca74..20a60900 100644 --- a/src/locale/wcscoll.c +++ b/src/locale/wcscoll.c @@ -10,7 +10,7 @@ int __wcscoll_l(const wchar_t *l, const wchar_t *r, locale_t locale) int wcscoll(const wchar_t *l, const wchar_t *r) { - return __wcscoll_l(l, r, LC_GLOBAL_LOCALE); + return __wcscoll_l(l, r, 0); } weak_alias(__wcscoll_l, wcscoll_l); diff --git a/src/locale/wcsxfrm.c b/src/locale/wcsxfrm.c index f977f9e1..cb79c97e 100644 --- a/src/locale/wcsxfrm.c +++ b/src/locale/wcsxfrm.c @@ -15,7 +15,7 @@ size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n size_t wcsxfrm(wchar_t *restrict dest, const wchar_t *restrict src, size_t n) { - return __wcsxfrm_l(dest, src, n, LC_GLOBAL_LOCALE); + return __wcsxfrm_l(dest, src, n, 0); } weak_alias(__wcsxfrm_l, wcsxfrm_l); diff --git a/src/time/strftime.c b/src/time/strftime.c index 96cb996d..3f0ec3e3 100644 --- a/src/time/strftime.c +++ b/src/time/strftime.c @@ -214,7 +214,7 @@ recu_strftime: size_t strftime(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm) { - return __strftime_l(s, n, f, tm, LC_GLOBAL_LOCALE); + return __strftime_l(s, n, f, tm, 0); } weak_alias(__strftime_l, strftime_l); diff --git a/src/time/wcsftime.c b/src/time/wcsftime.c index 7b631f5f..469d0f4c 100644 --- a/src/time/wcsftime.c +++ b/src/time/wcsftime.c @@ -34,5 +34,5 @@ size_t __wcsftime_l(wchar_t *restrict wcs, size_t n, const wchar_t *restrict f, size_t wcsftime(wchar_t *restrict wcs, size_t n, const wchar_t *restrict f, const struct tm *restrict tm) { - return __wcsftime_l(wcs, n, f, tm, LC_GLOBAL_LOCALE); + return __wcsftime_l(wcs, n, f, tm, 0); } -- 2.25.1