diff options
author | Roland McGrath <roland@gnu.org> | 2002-08-30 10:36:44 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-08-30 10:36:44 +0000 |
commit | 1ce8aaaedbf549702c607e8a944bcb06b2c37544 (patch) | |
tree | 76190020f59b42303fd7586536c5257634f6623c /locale/freelocale.c | |
parent | ccaf7306707314c44a8f636cc198a80fa7db12b1 (diff) | |
download | glibc-1ce8aaaedbf549702c607e8a944bcb06b2c37544.tar.gz glibc-1ce8aaaedbf549702c607e8a944bcb06b2c37544.tar.xz glibc-1ce8aaaedbf549702c607e8a944bcb06b2c37544.zip |
* locale/xlocale.h (struct __locale_struct): New member `__names'.
* locale/xlocale.c (_nl_C_locobj): Update initializer. * locale/global-locale.c (_nl_global_locale): Likewise. * locale/duplocale.c (__duplocale): strdup __names elements. * locale/freelocale.c (__freelocale): Free __names elements. * locale/localename.c (_nl_current_names): Variable removed. (__current_locale_name): Use _NL_CURRENT_LOCALE->__names instead. * locale/localeinfo.h (_nl_current_names): Removed decl. * locale/setlocale.c: Use _nl_global_locale->__names in place of _nl_current_names throughout. * locale/setlocale.c (setlocale): strdup -> __strdup (not ISO C). * sysdeps/gnu/errlist-compat.awk: Emit link_warnings for sys_errlist and sys_nerr in the output file. * sunrpc/Makefile (rpcgen-cmd): Pass CPP in rpcgen's environment. * scripts/cpp: Just use the environment variable. * libio/tst-mmap-setvbuf.c (main): Use 'm' fopen flag. * libio/tst-mmap-offend.c (do_test): Likewise. * libio/tst-mmap-fflushsync.c (do_test): Likewise. * libio/tst-mmap-eofsync.c (do_test): Likewise. * libio/tst-mmap2-eofsync.c (do_test): Likewise.
Diffstat (limited to 'locale/freelocale.c')
-rw-r--r-- | locale/freelocale.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/locale/freelocale.c b/locale/freelocale.c index de7e554c84..2ba1432a27 100644 --- a/locale/freelocale.c +++ b/locale/freelocale.c @@ -38,9 +38,14 @@ __freelocale (__locale_t dataset) __libc_lock_lock (__libc_setlocale_lock); for (cnt = 0; cnt < __LC_LAST; ++cnt) - if (cnt != LC_ALL && dataset->__locales[cnt]->usage_count != UNDELETABLE) - /* We can remove the data. */ - _nl_remove_locale (cnt, dataset->__locales[cnt]); + if (cnt != LC_ALL) + { + if (dataset->__locales[cnt]->usage_count != UNDELETABLE) + /* We can remove the data. */ + _nl_remove_locale (cnt, dataset->__locales[cnt]); + if (dataset->__names[cnt] != _nl_C_name) + free ((char *) dataset->__names[cnt]); + } /* Free the locale_t handle itself. */ free (dataset); |