]> code.delx.au - gnu-emacs/commitdiff
* keyboard.c (read_char): Rebalance specpdl after receiving jump.
authorChong Yidong <cyd@stupidchicken.com>
Sat, 5 Aug 2006 01:38:21 +0000 (01:38 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sat, 5 Aug 2006 01:38:21 +0000 (01:38 +0000)
src/ChangeLog
src/keyboard.c

index 59be848bf581ced047460ed5fab4a8971df73063..aa025125067dbb2d5ad485f831a941ce428ddead 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_char): Rebalance specpdl after receiving jump.
+
+       * process.c: Reapply 2006-08-01 change.
+
 2006-08-04  Eli Zaretskii  <eliz@gnu.org>
 
        * w32fns.c (w32_query_font): Fix last change: use stricmp.
index 95d880d1209539d6adda4e68f5353d9ea4019cad..a4e1c98c0139a8d72fb402cc0e5b624f90a2a55a 100644 (file)
@@ -2403,7 +2403,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
      EMACS_TIME *end_time;
 {
   volatile Lisp_Object c;
-  int count;
+  int count, jmpcount;
   jmp_buf local_getcjmp;
   jmp_buf save_jump;
   volatile int key_already_recorded = 0;
@@ -2629,11 +2629,13 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
      around any call to sit_for or kbd_buffer_get_event;
      it *must not* be in effect when we call redisplay.  */
 
+  jmpcount = SPECPDL_INDEX ();
   if (_setjmp (local_getcjmp))
     {
       /* We must have saved the outer value of getcjmp here,
         so restore it now.  */
       restore_getcjmp (save_jump);
+      unbind_to (jmpcount, Qnil);
       XSETINT (c, quit_char);
       internal_last_event_frame = selected_frame;
       Vlast_event_frame = internal_last_event_frame;