summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Src/exec.c12
-rw-r--r--Test/A04redirect.ztst24
3 files changed, 34 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 0bf5502b6..c2d9b1c7b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2018-04-29 Barton E. Schaefer <schaefer@zsh.org>
+
+ * Ricardo Giorni: 47201: fix 42355 for multiple backslashes
+
2018-04-26 Peter Stephenson <p.stephenson@samsung.com>
* c.f. 42726: Test/W02jobs.ztst: Back off fg and bg tests as they
diff --git a/Src/exec.c b/Src/exec.c
index ee55aac8c..64cf5ae46 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -4435,16 +4435,16 @@ gethere(char **strp, int typ)
bptr = buf + bsiz;
bsiz *= 2;
}
- if (lexstop)
+ if (lexstop || c == '\n')
break;
- if (c == '\n') {
- if (!qt && bptr > t && *(bptr - 1) == '\\') {
- /* line continuation */
+ if (!qt && c == '\\') {
+ *bptr++ = c;
+ c = hgetc();
+ if (c == '\n') {
bptr--;
c = hgetc();
continue;
- } else
- break;
+ }
}
*bptr++ = c;
c = hgetc();
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
index b5b65cf5d..1e17dddd4 100644
--- a/Test/A04redirect.ztst
+++ b/Test/A04redirect.ztst
@@ -176,6 +176,30 @@
>tab\stripping
>Last line
+ heretest() {
+ print First line
+ cat <<-HERE
+ $foo\\
+ $foo
+ some\\ \
+ stuff
+ to\
+ test \\
+ more backslash craziness\\\\\\\\\
+ wild
+ HERE
+ print Last line
+ }
+ heretest
+0:No line continuation in here-document on escaped backslash
+>First line
+>bar\
+>bar
+>some\ stuff
+>to test \
+>more backslash craziness\\\\ wild
+>Last line
+
#
# exec tests: perform these in subshells so if they fail the
# shell won't exit.