]> git.eshelyaron.com Git - emacs.git/commitdiff
* emacs.c (Fkill_emacs): Set waiting_for_input to 0 to avoid aborting on Fsignal.
authorChong Yidong <cyd@gnu.org>
Sat, 19 Jan 2013 08:49:17 +0000 (16:49 +0800)
committerChong Yidong <cyd@gnu.org>
Sat, 19 Jan 2013 08:49:17 +0000 (16:49 +0800)
Fixes: debbugs:13289
src/ChangeLog
src/emacs.c

index 3727e13d580c444cd83253511d719e6a24036d4e..4bee4fc5ed73fc9e0f3c6c25eab4e5ead28ea1bc 100644 (file)
@@ -1,3 +1,8 @@
+2013-01-19  Chong Yidong  <cyd@gnu.org>
+
+       * emacs.c (Fkill_emacs): Set waiting_for_input to 0 to avoid
+       aborting on Fsignal (Bug#13289).
+
 2013-01-19  Eli Zaretskii  <eliz@gnu.org>
 
        * w32.c (acl_set_file): Treat ERROR_ACCESS_DENIED from
index 6536c3708af60de66091d1ed4c5c06c08366e279..b7888d343f19f56ac8649597601ed8c393d1f36e 100644 (file)
@@ -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);