1999-01-28 Ulrich Drepper <drepper@cygnus.com>
+ * iconv/gconv_dl.c: Unload all modules when debugging memory use.
+
* locale/loadlocale.c (_nl_unload_locale): Free locale name.
* intl/finddomain.c (free_mem): Also free filename.
/* Handle loading/unloading of shared object for transformation.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
return GCONV_OK;
}
+
+
+/* We run this if we debug the memory allocation. */
+static void
+do_release_all (const void *nodep, VISIT value, int level)
+{
+ struct gconv_loaded_object *obj = *(struct gconv_loaded_object **) nodep;
+
+ if (value != preorder && value != leaf)
+ return;
+
+ /* Unload the shared object. We don't use the trick to
+ catch errors since in the case an error is signalled
+ something is really wrong. */
+ _dl_close (obj->handle);
+
+ free (obj);
+}
+
+static void __attribute__ ((unused))
+free_mem (void)
+{
+ __twalk (loaded, do_release_all);
+}
+text_set_element (__libc_subfreeres, free_mem);