summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/params.c2
2 files changed, 5 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 3fd805473..2c50b3228 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2013-09-26  Barton E. Schaefer  <schaefer@zsh.org>
 
+	* 31772: Src/params.c: queue_signals() to prevent re-entry into
+	endparamscope().
+
 	* 31770: Src/hist.c: memmove() instead of memcpy() for overlapping
 	regions.
 
diff --git a/Src/params.c b/Src/params.c
index 8649178ef..d6711e4fa 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -4667,10 +4667,12 @@ startparamscope(void)
 mod_export void
 endparamscope(void)
 {
+    queue_signals();
     locallevel--;
     /* This pops anything from a higher locallevel */
     saveandpophiststack(0, HFILE_USE_OPTIONS);
     scanhashtable(paramtab, 0, 0, 0, scanendscope, 0);
+    unqueue_signals();
 }
 
 /**/