about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2003-08-11 13:19:48 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2003-08-11 13:19:48 +0000
commite65a8115208b95cb19c6fc55550ede5c3b82634d (patch)
treed506a0cab7a164e82fab1904133aff15b9edaf1c /Src
parentb38f3c9a17338b3e9ed37887a483b2e476f0fa4a (diff)
downloadzsh-e65a8115208b95cb19c6fc55550ede5c3b82634d.tar.gz
zsh-e65a8115208b95cb19c6fc55550ede5c3b82634d.tar.xz
zsh-e65a8115208b95cb19c6fc55550ede5c3b82634d.zip
18941: history wrong after parse error during alias expansion
Diffstat (limited to 'Src')
-rw-r--r--Src/hist.c2
-rw-r--r--Src/input.c14
2 files changed, 16 insertions, 0 deletions
diff --git a/Src/hist.c b/Src/hist.c
index f1f240d3d..a25354f07 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -290,6 +290,8 @@ safeinungetc(int c)
 void
 herrflush(void)
 {
+    inpopalias();
+
     while (!lexstop && inbufct && !strin)
 	hwaddc(ingetc());
 }
diff --git a/Src/input.c b/Src/input.c
index e712ad19a..08ad4eb87 100644
--- a/Src/input.c
+++ b/Src/input.c
@@ -549,3 +549,17 @@ inpop(void)
 	inpoptop();
     } while (remcont);
 }
+
+/*
+ * Expunge any aliases from the input stack; they shouldn't appear
+ * in the history and need to be flushed explicitly when we encounter
+ * an error.
+ */
+
+/**/
+void
+inpopalias(void)
+{
+    while (inbufflags & INP_ALIAS)
+	inpoptop();
+}