summaryrefslogtreecommitdiff
path: root/locale/setlocale.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-29 05:57:16 +0000
committerRoland McGrath <roland@gnu.org>2002-08-29 05:57:16 +0000
commit9a411bf59fc681103e6a509ec3e13c68e8c61224 (patch)
treef62b3b3542ee9687ab654590687c22f348f47e67 /locale/setlocale.c
parent963e3b588003bafb2529e4a989211b0ecc39c684 (diff)
* locale/findlocale.c [NL_CURRENT_INDIRECT] (_nl_C): New variable.
* locale/setlocale.c (setlocale) [NL_CURRENT_INDIRECT]: Null return from _nl_find_locale ok if for _nl_C_name.
Diffstat (limited to 'locale/setlocale.c')
-rw-r--r--locale/setlocale.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/locale/setlocale.c b/locale/setlocale.c
index 1944336004..c64db08f05 100644
--- a/locale/setlocale.c
+++ b/locale/setlocale.c
@@ -307,7 +307,14 @@ setlocale (int category, const char *locale)
&newnames[category]);
if (newdata[category] == NULL)
- break;
+ {
+#ifdef NL_CURRENT_INDIRECT
+ if (newnames[category] == _nl_C_name)
+ /* Null because it's the weak value of _nl_C_LC_FOO. */
+ continue;
+#endif
+ break;
+ }
/* We must not simply free a global locale since we have no
control over the usage. So we mark it as un-deletable. */