about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/parse.c3
-rw-r--r--Test/A04redirect.ztst10
3 files changed, 16 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 14aadf2e0..7c1d327d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-24  Peter Stephenson  <p.w.stephenson@ntlworld.com>
+
+	* 44446: Src/parse.c, Test/A04redirect.ztst: fix here document
+	with file descriptor declarator.
+
 2019-06-23  Peter Stephenson  <p.w.stephenson@ntlworld.com>
 
 	* Martijn: 44443: Src/builtin.c: POSIX allows exporting readonly
diff --git a/Src/parse.c b/Src/parse.c
index 27234497b..53709ac00 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -2279,7 +2279,8 @@ par_redir(int *rp, char *idstring)
 void
 setheredoc(int pc, int type, char *str, char *termstr, char *munged_termstr)
 {
-    ecbuf[pc] = WCB_REDIR(type | REDIR_FROM_HEREDOC_MASK);
+    int varid = WC_REDIR_VARID(ecbuf[pc]) ? REDIR_VARID_MASK : 0;
+    ecbuf[pc] = WCB_REDIR(type | REDIR_FROM_HEREDOC_MASK | varid);
     ecbuf[pc + 2] = ecstrcode(str);
     ecbuf[pc + 3] = ecstrcode(termstr);
     ecbuf[pc + 4] = ecstrcode(munged_termstr);
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
index 1e17dddd4..d60519064 100644
--- a/Test/A04redirect.ztst
+++ b/Test/A04redirect.ztst
@@ -692,11 +692,19 @@
 >b
 >d
 
-  umask 0777
+  (umask 0777
   cat <<'  HERE'
   look ma, no permissions
   HERE
   cat <<<"it's a miracle"
+  )
 0:Here-{string,document}s succeed with restrictive umask
 >  look ma, no permissions
 >it's a miracle
+
+  exec {testfd}<<'  HERE'
+  This is, in some sense, a here document.
+  HERE
+  cat <&$testfd
+0:Regression test for here document with fd declarator
+>  This is, in some sense, a here document.