about summary refs log tree commit diff
path: root/Src/Zle/zle_tricky.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2010-03-22 16:22:13 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2010-03-22 16:22:13 +0000
commit08dec290d4d6558f95df9e22daf3a9940547442a (patch)
tree9eb814910f2b5c396d2cd82928e5e7ce14f1984d /Src/Zle/zle_tricky.c
parent7dd4c69371b1b8a3bdb7e89a14f1750559b8cc42 (diff)
downloadzsh-08dec290d4d6558f95df9e22daf3a9940547442a.tar.gz
zsh-08dec290d4d6558f95df9e22daf3a9940547442a.tar.xz
zsh-08dec290d4d6558f95df9e22daf3a9940547442a.zip
Fix ZLE access to pushed history line
Diffstat (limited to 'Src/Zle/zle_tricky.c')
-rw-r--r--Src/Zle/zle_tricky.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index dce7fb700..3e2a35171 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -632,16 +632,16 @@ docomplete(int lst)
     origline = dupstring(zlemetaline);
     origcs = zlemetacs;
     origll = zlemetall;
-    if (!isfirstln && chline != NULL) {
-	/* If we are completing in a multi-line buffer (which was not  *
-	 * taken from the history), we have to prepend the stuff saved *
-	 * in chline to the contents of line.                          */
-
+    if (!isfirstln && (chline != NULL || zle_chline != NULL)) {
 	ol = dupstring(zlemetaline);
-	/* Make sure that chline is zero-terminated. */
-	*hptr = '\0';
+	/*
+	 * Make sure that chline is zero-terminated.
+	 * zle_chline always is and hptr doesn't point into it anyway.
+	 */
+	if (!zle_chline)
+	    *hptr = '\0';
 	zlemetacs = 0;
-	inststr(chline);
+	inststr(zle_chline ? zle_chline : chline);
 	chl = zlemetacs;
 	zlemetacs += ocs;
     } else