summaryrefslogtreecommitdiff
path: root/locale/uselocale.c
diff options
context:
space:
mode:
Diffstat (limited to 'locale/uselocale.c')
-rw-r--r--locale/uselocale.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/locale/uselocale.c b/locale/uselocale.c
index d19ae50d0b..e2f38c10ba 100644
--- a/locale/uselocale.c
+++ b/locale/uselocale.c
@@ -19,6 +19,7 @@
#include <locale.h>
#include "localeinfo.h"
+#include <ctype.h>
/* Switch the current thread's locale to DATASET.
If DATASET is null, instead just return the current setting.
@@ -60,6 +61,11 @@ __uselocale (locale_t newloc)
# include "categories.def"
# undef DEFINE_CATEGORY
#endif
+
+ /* Update the special tsd cache of some locale data. */
+ __libc_tsd_set (CTYPE_B, (void *) locobj->__ctype_b);
+ __libc_tsd_set (CTYPE_TOLOWER, (void *) locobj->__ctype_tolower);
+ __libc_tsd_set (CTYPE_TOUPPER, (void *) locobj->__ctype_toupper);
}
return oldloc == &_nl_global_locale ? LC_GLOBAL_LOCALE : oldloc;