comparison src/alloc.c @ 35170:a9b677239421

(Fgarbage_collect): Use a record_unwind_protect to ensure that pop_message is called.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 09 Jan 2001 13:43:43 +0000
parents a65d8c29442a
children cc2a06489f0d
comparison
equal deleted inserted replaced
35169:9f4a395a24cb 35170:a9b677239421
1 /* Storage allocation and gc for GNU Emacs Lisp interpreter. 1 /* Storage allocation and gc for GNU Emacs Lisp interpreter.
2 Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 98, 1999, 2000 2 Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 98, 1999, 2000, 2001
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5 This file is part of GNU Emacs. 5 This file is part of GNU Emacs.
6 6
7 GNU Emacs is free software; you can redistribute it and/or modify 7 GNU Emacs is free software; you can redistribute it and/or modify
3700 register struct backtrace *backlist; 3700 register struct backtrace *backlist;
3701 char stack_top_variable; 3701 char stack_top_variable;
3702 register int i; 3702 register int i;
3703 int message_p; 3703 int message_p;
3704 Lisp_Object total[8]; 3704 Lisp_Object total[8];
3705 int count = BINDING_STACK_SIZE ();
3705 3706
3706 /* In case user calls debug_print during GC, 3707 /* In case user calls debug_print during GC,
3707 don't let that cause a recursive GC. */ 3708 don't let that cause a recursive GC. */
3708 consing_since_gc = 0; 3709 consing_since_gc = 0;
3709 3710
3710 /* Save what's currently displayed in the echo area. */ 3711 /* Save what's currently displayed in the echo area. */
3711 message_p = push_message (); 3712 message_p = push_message ();
3713 record_unwind_protect (push_message_unwind, Qnil);
3712 3714
3713 /* Save a copy of the contents of the stack, for debugging. */ 3715 /* Save a copy of the contents of the stack, for debugging. */
3714 #if MAX_SAVE_STACK > 0 3716 #if MAX_SAVE_STACK > 0
3715 if (NILP (Vpurify_flag)) 3717 if (NILP (Vpurify_flag))
3716 { 3718 {
3911 restore_message (); 3913 restore_message ();
3912 else 3914 else
3913 message1_nolog ("Garbage collecting...done"); 3915 message1_nolog ("Garbage collecting...done");
3914 } 3916 }
3915 3917
3916 pop_message (); 3918 unbind_to (count, Qnil);
3917 3919
3918 total[0] = Fcons (make_number (total_conses), 3920 total[0] = Fcons (make_number (total_conses),
3919 make_number (total_free_conses)); 3921 make_number (total_free_conses));
3920 total[1] = Fcons (make_number (total_symbols), 3922 total[1] = Fcons (make_number (total_symbols),
3921 make_number (total_free_symbols)); 3923 make_number (total_free_symbols));