diff options
author | Roland McGrath <roland@gnu.org> | 2003-10-31 23:35:42 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2003-10-31 23:35:42 +0000 |
commit | 158a85bff125c238ba67467f4a2416a9b3a6a824 (patch) | |
tree | 10124f757f24ea2425ce3dba76bbff35743945d6 /localedata/bug-usesetlocale.c | |
parent | decc3affca638a2d458a80a83ff364b2e2e2851c (diff) | |
download | glibc-158a85bff125c238ba67467f4a2416a9b3a6a824.tar.gz glibc-158a85bff125c238ba67467f4a2416a9b3a6a824.tar.xz glibc-158a85bff125c238ba67467f4a2416a9b3a6a824.zip |
* locale/lc-ctype.c (_nl_postload_ctype): Update _nl_global_locale's
special members.
Diffstat (limited to 'localedata/bug-usesetlocale.c')
-rw-r--r-- | localedata/bug-usesetlocale.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/localedata/bug-usesetlocale.c b/localedata/bug-usesetlocale.c new file mode 100644 index 0000000000..0637067de7 --- /dev/null +++ b/localedata/bug-usesetlocale.c @@ -0,0 +1,38 @@ +/* Test case for setlocale vs uselocale (LC_GLOBAL_LOCALE) bug. */ + +#define _GNU_SOURCE 1 +#include <locale.h> +#include <stdio.h> +#include <ctype.h> + +static int +do_test (void) +{ + __locale_t loc_new, loc_old; + + int first = !!isalpha(0xE4); + + setlocale (LC_ALL, "de_DE"); + + int global_de = !!isalpha(0xE4); + + loc_new = newlocale (1 << LC_ALL, "C", 0); + loc_old = uselocale (loc_new); + + int used_c = !!isalpha(0xE4); + + uselocale (loc_old); + + int used_global = !!isalpha(0xE4); + + printf ("started %d, after setlocale %d\n", first, global_de); + printf ("after uselocale %d, after LC_GLOBAL_LOCALE %d\n", + used_c, used_global); + + freelocale (loc_new); + return !(used_c == first && used_global == global_de); +} + + +#define TEST_FUNCTION do_test () +#include "test-skeleton.c" |