From 73c1421878b3ce4ac6fdb2b0133fda7522578a29 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 19 Jan 2013 16:49:17 +0800 Subject: [PATCH] * emacs.c (Fkill_emacs): Set waiting_for_input to 0 to avoid aborting on Fsignal. Fixes: debbugs:13289 --- src/ChangeLog | 5 +++++ src/emacs.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 3727e13d58..4bee4fc5ed 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2013-01-19 Chong Yidong + + * emacs.c (Fkill_emacs): Set waiting_for_input to 0 to avoid + aborting on Fsignal (Bug#13289). + 2013-01-19 Eli Zaretskii * w32.c (acl_set_file): Treat ERROR_ACCESS_DENIED from diff --git a/src/emacs.c b/src/emacs.c index 6536c3708a..b7888d343f 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -133,7 +133,7 @@ Lisp_Object Qfile_name_handler_alist; Lisp_Object Qrisky_local_variable; -Lisp_Object Qkill_emacs; +Lisp_Object Qkill_emacs, Qkill_emacs_hook; /* If true, Emacs should not attempt to use a window-specific code, but instead should use the virtual terminal under which it was started. */ @@ -1841,7 +1841,6 @@ all of which are called before Emacs is actually killed. */) (Lisp_Object arg) { struct gcpro gcpro1; - Lisp_Object hook; int exit_code; GCPRO1 (arg); @@ -1849,9 +1848,10 @@ all of which are called before Emacs is actually killed. */) if (feof (stdin)) arg = Qt; - hook = intern ("kill-emacs-hook"); - Frun_hooks (1, &hook); - + /* Fsignal calls emacs_abort () if it sees that waiting_for_input is + set. */ + waiting_for_input = 0; + Frun_hooks (1, &Qkill_emacs_hook); UNGCPRO; #ifdef HAVE_X_WINDOWS @@ -2263,6 +2263,7 @@ syms_of_emacs (void) DEFSYM (Qfile_name_handler_alist, "file-name-handler-alist"); DEFSYM (Qrisky_local_variable, "risky-local-variable"); DEFSYM (Qkill_emacs, "kill-emacs"); + DEFSYM (Qkill_emacs_hook, "kill-emacs-hook"); #ifndef CANNOT_DUMP defsubr (&Sdump_emacs); -- 2.20.1