summary refs log tree commit diff
path: root/Src/exec.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2018-02-12 10:06:45 +0000
committerPeter Stephenson <pws@zsh.org>2018-02-12 10:06:45 +0000
commit47aa60950c488a49dc245659c126e3078bf499d0 (patch)
tree6429d9a55a7e17584fce5186de8a592f9729166b /Src/exec.c
parent2bf952b102bce70b879c00d2476a9a74eab5cfaf (diff)
downloadzsh-47aa60950c488a49dc245659c126e3078bf499d0.tar.gz
zsh-47aa60950c488a49dc245659c126e3078bf499d0.tar.xz
zsh-47aa60950c488a49dc245659c126e3078bf499d0.zip
42355: Fix use of backslashes on here doc input.
Handling of white space in particular was confusing and inconsistent
with other shells.
Diffstat (limited to 'Src/exec.c')
-rw-r--r--Src/exec.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/Src/exec.c b/Src/exec.c
index c39680de7..e5c64555c 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -4387,8 +4387,17 @@ gethere(char **strp, int typ)
 		bptr = buf + bsiz;
 		bsiz *= 2;
 	    }
-	    if (lexstop || c == '\n')
+	    if (lexstop)
 		break;
+	    if (c == '\n') {
+		if (!qt && bptr > t && *(bptr - 1) == '\\') {
+		    /* line continuation */
+		    bptr--;
+		    c = hgetc();
+		    continue;
+		} else
+		    break;
+	    }
 	    *bptr++ = c;
 	    c = hgetc();
 	}