diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | iconv/gconv_dl.c | 3 | ||||
-rw-r--r-- | locale/loadarchive.c | 9 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/fexecve.c | 1 |
4 files changed, 18 insertions, 3 deletions
@@ -1,5 +1,13 @@ +2002-11-05 Jakub Jelinek <jakub@redhat.com> + + * iconv/gconv_dl.c (free_mem): Clear loaded. + * locale/loadarchive.c (_nl_archive_subfreeres): Call locale_data's + cleanup if any. + 2002-11-05 Ulrich Drepper <drepper@redhat.com> + * sysdeps/unix/sysv/linux/fexecve.c: Include <stdio.h>. + * libio/ioseekoff.c: Remove INTDEF. Define _IO_seekoff_unlocked. Same as old code without locking. _IO_seekoff calls this function after locking the stream. diff --git a/iconv/gconv_dl.c b/iconv/gconv_dl.c index ff90a54..cc7627a 100644 --- a/iconv/gconv_dl.c +++ b/iconv/gconv_dl.c @@ -1,5 +1,5 @@ /* Handle loading/unloading of shared object for transformation. - Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -206,6 +206,7 @@ do_release_all (void *nodep) libc_freeres_fn (free_mem) { __tdestroy (loaded, do_release_all); + loaded = NULL; } diff --git a/locale/loadarchive.c b/locale/loadarchive.c index dbb4d7a..3fddc7d 100644 --- a/locale/loadarchive.c +++ b/locale/loadarchive.c @@ -510,8 +510,13 @@ _nl_archive_subfreeres (void) free (dead->name); for (category = 0; category < __LC_LAST; ++category) if (category != LC_ALL) - /* _nl_unload_locale just does this free for the archive case. */ - free (dead->data[category]); + { + /* _nl_unload_locale just does this free for the archive case. */ + if (dead->data[category]->private.cleanup) + (*dead->data[category]->private.cleanup) (dead->data[category]); + + free (dead->data[category]); + } free (dead); } archloaded = NULL; diff --git a/sysdeps/unix/sysv/linux/fexecve.c b/sysdeps/unix/sysv/linux/fexecve.c index dbf5690..a90364e 100644 --- a/sysdeps/unix/sysv/linux/fexecve.c +++ b/sysdeps/unix/sysv/linux/fexecve.c @@ -18,6 +18,7 @@ #include <errno.h> #include <stddef.h> +#include <stdio.h> #include <unistd.h> #include <sys/stat.h> |