diff options
Diffstat (limited to 'locale')
-rw-r--r-- | locale/Makefile | 1 | ||||
-rw-r--r-- | locale/libBrokenLocale.map | 7 | ||||
-rw-r--r-- | locale/setlocale.c | 9 |
3 files changed, 15 insertions, 2 deletions
diff --git a/locale/Makefile b/locale/Makefile index 7acef573d6..90b218130d 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -45,6 +45,7 @@ extra-libs = libBrokenLocale extra-libs-others = $(extra-libs) libBrokenLocale-routines = broken_cur_max +libBrokenLocale-map = libBrokenLocale.map subdir-dirs = programs vpath %.c programs diff --git a/locale/libBrokenLocale.map b/locale/libBrokenLocale.map new file mode 100644 index 0000000000..09752759f7 --- /dev/null +++ b/locale/libBrokenLocale.map @@ -0,0 +1,7 @@ +GLIBC_2.0 { + global: + __ctype_get_mb_cur_max; + + local: + *; +}; \ No newline at end of file diff --git a/locale/setlocale.c b/locale/setlocale.c index ff7192f45d..3e63b25ac2 100644 --- a/locale/setlocale.c +++ b/locale/setlocale.c @@ -204,8 +204,7 @@ new_composite_name (int category, const char *newnames[LC_ALL]) static inline void setname (int category, const char *name) { - if (_nl_current[category] == NULL - && _nl_current_names[category] != _nl_C_name) + if (_nl_current_names[category] != _nl_C_name) free ((void *) _nl_current_names[category]); _nl_current_names[category] = name; @@ -351,6 +350,9 @@ setlocale (int category, const char *locale) /* Critical section left. */ __libc_lock_unlock (__libc_setlocale_lock); + /* Free the resources (the locale path variable. */ + free (locale_path); + return composite; } else @@ -395,6 +397,9 @@ setlocale (int category, const char *locale) /* Critical section left. */ __libc_lock_unlock (__libc_setlocale_lock); + /* Free the resources (the locale path variable. */ + free (locale_path); + return (char *) newname; } } |