aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--iconv/gconv_dl.c3
-rw-r--r--locale/loadarchive.c9
-rw-r--r--sysdeps/unix/sysv/linux/fexecve.c1
4 files changed, 18 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2714b51d52..652f67bbc3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 ff90a54b41..cc7627aba2 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 dbb4d7afd5..3fddc7d05b 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 dbf56907bb..a90364eb49 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>