summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2001-01-09 13:43:43 +0000
committerGerd Moellmann <gerd@gnu.org>2001-01-09 13:43:43 +0000
commit98edb5ff5fd06795c03513550216d49219f50550 (patch)
treefcd7e071b1a9b50879722a6db42715ded7ae18fe
parentfc46ca23fa8c204d7eb28b8f4457bbe135d1fa43 (diff)
downloademacs-98edb5ff5fd06795c03513550216d49219f50550.tar.gz
(Fgarbage_collect): Use a record_unwind_protect to
ensure that pop_message is called.
-rw-r--r--src/alloc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/alloc.c b/src/alloc.c
index eba9d867c8c..8685496a515 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1,5 +1,5 @@
/* Storage allocation and gc for GNU Emacs Lisp interpreter.
- Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 98, 1999, 2000
+ Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 98, 1999, 2000, 2001
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -3702,6 +3702,7 @@ Garbage collection happens automatically if you cons more than\n\
register int i;
int message_p;
Lisp_Object total[8];
+ int count = BINDING_STACK_SIZE ();
/* In case user calls debug_print during GC,
don't let that cause a recursive GC. */
@@ -3709,6 +3710,7 @@ Garbage collection happens automatically if you cons more than\n\
/* Save what's currently displayed in the echo area. */
message_p = push_message ();
+ record_unwind_protect (push_message_unwind, Qnil);
/* Save a copy of the contents of the stack, for debugging. */
#if MAX_SAVE_STACK > 0
@@ -3913,7 +3915,7 @@ Garbage collection happens automatically if you cons more than\n\
message1_nolog ("Garbage collecting...done");
}
- pop_message ();
+ unbind_to (count, Qnil);
total[0] = Fcons (make_number (total_conses),
make_number (total_free_conses));