summaryrefslogtreecommitdiff
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