diff options
author | Roland McGrath <roland@gnu.org> | 2002-09-01 12:39:40 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-09-01 12:39:40 +0000 |
commit | 0f283ffc5e8822a367c4703abd584348ff139810 (patch) | |
tree | ea4e3a9a5c4dca2c51fb8cb08995de41b2bf998e /locale/findlocale.c | |
parent | 0ba454fccb56eb5890ad692949323af6ad64189c (diff) | |
download | glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.gz glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.xz glibc-0f283ffc5e8822a367c4703abd584348ff139810.zip |
* sysdeps/generic/libc-tls.c (__pthread_initialize_minimal): Pass
TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN instead of 0, 1. * include/getopt.h: Include <features.h> before <posix/getopt.h>. * locale/findlocale.c (_nl_remove_locale): Don't search in _nl_locale_file_list if DATA->alloc is ld_archive. Use _nl_unload_locale to do the rest of the work. * locale/loadarchive.c (_nl_load_locale_from_archive): Set usage_count of new structure to UNDELETABLE. * wctype/wctype.h (iswalnum, iswalpha, iswcntrl, iswdigit, iswlower, iswgraph, iswprint, iswpunct, iswspace, iswupper, iswxdigit, iswblank, towlower, towupper): Macros removed. * ctype/ctype.h (__tobody): Put parens around macro argument. (__isctype): Macro removed. (__ctype_b, __ctype_tolower, __ctype_toupper): Decls removed. (isalnum, isalpha, iscntrl, isdigit, islower, isgraph, isprint, ispunct, isspace, isupper, isxdigit, isblank, _tolower, _toupper, tolower, toupper): Macros and inlines removed. * include/ctype.h [! NOT_IN_libc] (isalnum, isalpha, iscntrl, isdigit, islower, isgraph, isprint, ispunct, isspace, isupper, isxdigit, isblank, _tolower, _toupper, tolower, toupper): Define here instead, using _NL_CURRENT. * ctype/ctype.c (__ctype_tolower, __ctype_toupper): Define as macros using _NL_CURRENT. * ctype/ctype-extn.c (__ctype_tolower, __ctype_toupper): Likewise. * ctype/ctype-info.c (__ctype_b, __ctype_tolower, __ctype_toupper): Renamed these to __ctype_old_*. Define old names only for SHLIB_COMPAT. (__ctype32_b, __ctype32_tolower, __ctype32_toupper): Likewise. (__ctype32_wctrans, __ctype32_wctrans, __ctype32_width): Removed. * locale/lc-ctype.c (_nl_postload_ctype): Use renamed variables, conditional on SHLIB_COMPAT. Don't set removed variables at all. * wctype/wcfuncs.c: Use _NL_CURRENT instead of those globals. * wcsmbs/wcwidth.h (internal_wcwidth): Likewise. * resolv/res_init.c [RESOLVSORT] (sort_mask): Renamed sort_mask_chars. (ISSORTMASK): Update use. * intl/localealias.c [__GNUC__]: #undef alloca before #define. * nss/nss_files/files-XXX.c (last_use): Rename `none' to `nouse'. (_nss_files_getENTNAME_r): Likewise. * nss/nss_files/files-alias.c (last_use, _nss_files_getaliasent_r): Likewise. * Makerules (all-nonlib): Renamed from all-tests. Include $(others) here too. * locale/Makefile (CPPFLAGS-locale, CPPFLAGS-localedef, CPPFLAGS-ld-ctype, CPPFLAGS-ld-time, CPPFLAGS-ld-numeric, CPPFLAGS-ld-monetary, CPPFLAGS-ld-collate, CPPFLAGS-ld-identification, CPPFLAGS-charmap, CPPFLAGS-locarchive, CPPFLAGS-linereader, CPPFLAGS-charmap-dir): Variables removed. Instead, catch all the program modules via cppflags-iterator.mk. * sunrpc/Makefile (CPPFLAGS-rpc_main): Variable removed. Instead, catch all rpcgen-objs via cppflags-iterator.mk. * posix/tst-getconf.sh: If no third arg, work with static linking.
Diffstat (limited to 'locale/findlocale.c')
-rw-r--r-- | locale/findlocale.c | 47 |
1 files changed, 15 insertions, 32 deletions
diff --git a/locale/findlocale.c b/locale/findlocale.c index 6ecfdc2324..9c9b85347f 100644 --- a/locale/findlocale.c +++ b/locale/findlocale.c @@ -270,40 +270,23 @@ _nl_remove_locale (int locale, struct locale_data *data) { if (--data->usage_count == 0) { - /* First search the entry in the list of loaded files. */ - struct loaded_l10nfile *ptr = _nl_locale_file_list[locale]; - - /* Search for the entry. It must be in the list. Otherwise it - is a bug and we crash badly. */ - while ((struct locale_data *) ptr->data != data) - ptr = ptr->next; - - /* Mark the data as not available anymore. So when the data has - to be used again it is reloaded. */ - ptr->decided = 0; - ptr->data = NULL; - - /* Free the name. */ - free ((char *) data->name); - -#ifdef _POSIX_MAPPED_FILES - /* Really delete the data. First delete the real data. */ - if (__builtin_expect (data->alloc == ld_mapped, 1)) + if (data->alloc != ld_archive) { - /* Try to unmap the area. If this fails we mark the area as - permanent. */ - if (__munmap ((caddr_t) data->filedata, data->filesize) != 0) - { - data->usage_count = UNDELETABLE; - return; - } + /* First search the entry in the list of loaded files. */ + struct loaded_l10nfile *ptr = _nl_locale_file_list[locale]; + + /* Search for the entry. It must be in the list. Otherwise it + is a bug and we crash badly. */ + while ((struct locale_data *) ptr->data != data) + ptr = ptr->next; + + /* Mark the data as not available anymore. So when the data has + to be used again it is reloaded. */ + ptr->decided = 0; + ptr->data = NULL; } - else -#endif /* _POSIX_MAPPED_FILES */ - /* The memory was malloced. */ - free ((void *) data->filedata); - /* Now free the structure itself. */ - free (data); + /* This does the real work. */ + _nl_unload_locale (data); } } |