changeset 24405:61704c572291

(main) [DOUG_LEA_MALLOC]: Work around a bug in glibc's malloc.
author Andreas Schwab <schwab@suse.de>
date Fri, 26 Feb 1999 09:23:52 +0000
parents f401b26570a4
children 76205fb50ca1
files src/emacs.c
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/emacs.c	Fri Feb 26 07:07:13 1999 +0000
+++ b/src/emacs.c	Fri Feb 26 09:23:52 1999 +0000
@@ -103,6 +103,9 @@
 extern void *malloc_get_state ();
 /* From glibc, a routine that overwrites the malloc internal state.  */
 extern void malloc_set_state ();
+/* Non-zero if the MALLOC_CHECK_ enviroment variable was set while
+   dumping.  Used to work around a bug in glibc's malloc.  */
+int malloc_using_checking;
 #endif
 
 /* Variable whose value is symbol giving operating system type.  */
@@ -565,9 +568,16 @@
 #ifdef DOUG_LEA_MALLOC
   if (initialized)
     {
+      if (!malloc_using_checking)
+	/* Work around a bug in glibc's malloc.  MALLOC_CHECK_ must be
+	   ignored if the heap to be restored was constructed without
+	   malloc checking.  */
+	unsetenv ("MALLOC_CHECK_");
       malloc_set_state (malloc_state_ptr);
       free (malloc_state_ptr);
     }
+  else
+    malloc_using_checking = getenv ("MALLOC_CHECK_") != NULL;
 #endif
 
 #ifdef RUN_TIME_REMAP