diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | localedata/ChangeLog | 5 | ||||
-rw-r--r-- | localedata/Makefile | 2 | ||||
-rw-r--r-- | localedata/bug-usesetlocale.c | 38 |
4 files changed, 49 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index d00c0563a1..3d1c05f6ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-10-31 Roland McGrath <roland@redhat.com> + + * locale/lc-ctype.c (_nl_postload_ctype): Update _nl_global_locale's + special members. + 2003-10-29 Ulrich Drepper <drepper@redhat.com> * po/be.po: Update from translation team. diff --git a/localedata/ChangeLog b/localedata/ChangeLog index b7285d1597..c572633003 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,8 @@ +2003-10-31 Roland McGrath <roland@redhat.com> + + * bug-usesetlocale.c: New file. + * Makefile (tests): Add it. + 2003-10-01 Ulrich Drepper <drepper@redhat.com> * SUPPORTED (SUPPORTED-LOCALES): Add uz_UZ@cyrillic.UTF-8. diff --git a/localedata/Makefile b/localedata/Makefile index c5e8711ca4..41495c24f6 100644 --- a/localedata/Makefile +++ b/localedata/Makefile @@ -92,7 +92,7 @@ locale_test_suite := tst_iswalnum tst_iswalpha tst_iswcntrl \ tst_wctype tst_wcwidth tests = $(locale_test_suite) tst-digits tst-setlocale bug-iconv-trans \ - tst-leaks tst-mbswcs6 tst-xlocale1 tst-xlocale2 + tst-leaks tst-mbswcs6 tst-xlocale1 tst-xlocale2 bug-usesetlocale ifeq (yes,$(build-shared)) ifneq (no,$(PERL)) tests: $(objpfx)mtrace-tst-leaks 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" |