about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--Src/Zle/zle_main.c6
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index a7dfa2e3c..125121037 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-10-03  Barton E. Schaefer  <schaefer@zsh.org>
 
+	* 39550: Src/Zle/zle_main.c: reset signal queue in recursiveedit()
+
 	* 39548: Src/signals.c, Src/signals.h: DEBUG for queueing_enabled
 
 	* 39547: Src/Zle/zle_main.c: handle zero delta in calc_timeout()
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index 4b47d6072..04b93575f 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -1868,11 +1868,17 @@ int
 recursiveedit(UNUSED(char **args))
 {
     int locerror;
+    int q = queue_signal_level();
+
+    /* zlecore() expects to be entered with signal queue disabled */
+    dont_queue_signals();
 
     redrawhook();
     zrefresh();
     zlecore();
 
+    restore_queue_signals(q);
+
     locerror = errflag ? 1 : 0;
     errflag = done = eofsent = 0;