diff src/data.c @ 83374:0b75ace4f7ad

Fix crash after y-or-n-p prompt triggered by emacsclient. (Reported by Han Boetes, analysis by Kalle Olavi Niemitalo.) * src/keyboard.c (temporarily_switch_to_single_kboard) (record_single_kboard_state, restore_kboard_configuration): New functions. (timer_check): Use record_single_kboard_state instead of naive single_kboard state management. * src/fns.c: Include termhooks.h. (Fy_or_n_p): Use temporarily_switch_to_single_kboard to prevent crashes caused by bogus longjmps in read_char. * src/callint.c (Fcall_interactively): Use temporarily_switch_to_single_kboard instead of single_kboard_state. Make sure it is correctly unwinded. * src/keyboard.c (recursive_edit_unwind): Remove single_kboard stuff. (Frecursive_edit): Use temporarily_switch_to_single_kboard for single_kboard state management. * src/minibuf.c (read_minibuf): Use temporarily_switch_to_single_kboard instead of simply calling single_kboard_state. * src/keyboard.c (push_device_kboard): Remove function. (push_kboard): New function. (push_frame_kboard): Use it. (pop_frame_kboard): Rename to pop_kboard. * src/xdisp.c (display_mode_line, Fformat_mode_line): Update uses. * src/data.c: Include termhooks.h. (Fterminal_local_value, Fset_terminal_local_value): Update. * src/Makefile.in (data.o, fns.o): Add termhooks.h dependency. * src/keyboard.h (push_device_kboard, pop_frame_kboard): Remove declarations. (push_kboard, pop_kboard, temporarily_switch_to_single_kboard) (record_single_kboard_state): New declarations. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-414
author Karoly Lorentey <lorentey@elte.hu>
date Sun, 11 Sep 2005 06:42:03 +0000
parents 532e0a9335a9
children 2a679c81f552
line wrap: on
line diff
--- a/src/data.c	Sun Sep 11 04:10:45 2005 +0000
+++ b/src/data.c	Sun Sep 11 06:42:03 2005 +0000
@@ -30,6 +30,7 @@
 #include "keyboard.h"
 #include "frame.h"
 #include "syssignal.h"
+#include "termhooks.h"  /* For FRAME_KBOARD reference in y-or-n-p. */
 
 #ifdef STDC_HEADERS
 #include <float.h>
@@ -1891,9 +1892,9 @@
 {
   Lisp_Object result;
   struct device *d = get_device (device, 1);
-  push_device_kboard (d);
+  push_kboard (d->kboard);
   result = Fsymbol_value (symbol);
-  pop_frame_kboard ();
+  pop_kboard ();
   return result;
 }
 
@@ -1911,9 +1912,9 @@
 {
   Lisp_Object result;
   struct device *d = get_device (device, 1);
-  push_device_kboard (d);
+  push_kboard (d->kboard);
   result = Fset (symbol, value);
-  pop_frame_kboard ();
+  pop_kboard ();
   return result;
 }