(linenum→info "unix/slp.c:2238")

glibc/2.7/localedata/bug-usesetlocale.c

    1: /* Test case for setlocale vs uselocale (LC_GLOBAL_LOCALE) bug.  */
    2: 
    3: #define _GNU_SOURCE 1
    4: #include <locale.h>
    5: #include <stdio.h>
    6: #include <ctype.h>
    7: 
    8: static int
    9: do_test (void)
   10: {
   11:   __locale_t loc_new, loc_old;
   12: 
   13:   int first = !!isalpha(0xE4);
   14: 
   15:   setlocale (LC_ALL, "de_DE");
   16: 
   17:   int global_de = !!isalpha(0xE4);
   18: 
   19:   loc_new = newlocale (1 << LC_ALL, "C", 0);
   20:   loc_old = uselocale (loc_new);
   21: 
   22:   int used_c = !!isalpha(0xE4);
   23: 
   24:   uselocale (loc_old);
   25: 
   26:   int used_global = !!isalpha(0xE4);
   27: 
   28:   printf ("started %d, after setlocale %d\n", first, global_de);
   29:   printf ("after uselocale %d, after LC_GLOBAL_LOCALE %d\n",
   30:           used_c, used_global);
   31: 
   32:   freelocale (loc_new);
   33:   return !(used_c == first && used_global == global_de);
   34: }
   35: 
   36: 
   37: #define TEST_FUNCTION do_test ()
   38: #include "test-skeleton.c"
Syntax (Markdown)