From 0ecb606cb6cf65de1d9fc8a919bceb4be476c602 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 12 Jul 2007 18:26:36 +0000 Subject: 2.5-18.1 --- iconv/gconv_cache.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'iconv/gconv_cache.c') diff --git a/iconv/gconv_cache.c b/iconv/gconv_cache.c index 9b695c377d..716c384de2 100644 --- a/iconv/gconv_cache.c +++ b/iconv/gconv_cache.c @@ -1,5 +1,5 @@ /* Cache handling for iconv modules. - Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -209,7 +209,18 @@ find_module (const char *directory, const char *filename, /* Call the init function. */ if (result->__init_fct != NULL) - status = DL_CALL_FCT (result->__init_fct, (result)); + { + __gconv_init_fct init_fct = result->__init_fct; +#ifdef PTR_DEMANGLE + PTR_DEMANGLE (init_fct); +#endif + status = DL_CALL_FCT (init_fct, (result)); + +#ifdef PTR_MANGLE + if (result->__btowc_fct != NULL) + PTR_MANGLE (result->__btowc_fct); +#endif + } } return status; @@ -456,7 +467,7 @@ libc_freeres_fn (free_mem) if (cache_malloced) free (gconv_cache); #ifdef _POSIX_MAPPED_FILES - else + else if (gconv_cache != NULL) __munmap (gconv_cache, cache_size); #endif } -- cgit v1.2.3