about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--stdlib/exit.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 47c6ab4798..4ee3d2d027 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,7 @@
 
 	* stdlib/atexit.c (initial): New variable.  Use to initialize
 	__exit_funcs.
-	* stdlib/exit.c (exit): Beware to not free statically allocale
+	* stdlib/exit.c (exit): Beware to not free statically allocated
 	list element [PR libc/1305].
 
 	* stdlib/xpg_basename.c (__xpg_basename): Don't return pointer to
diff --git a/stdlib/exit.c b/stdlib/exit.c
index dc189556b4..f44c519aa7 100644
--- a/stdlib/exit.c
+++ b/stdlib/exit.c
@@ -62,7 +62,10 @@ exit (int status)
 
       old = __exit_funcs;
       __exit_funcs = __exit_funcs->next;
-      free (old);
+      if (__exit_funcs != NULL)
+	/* Don't free the last element in the chain, this is the statically
+	   allocate element.  */
+	free (old);
     }
 
 #ifdef	HAVE_GNU_LD