mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
Fix command substitutions run on the same line as a here-doc (#91)
When a command substitution is run on the same line as a here-document, a syntax error occurs due to a regression introduced in ksh93u+ 2011-04-15: true << EOF; true $(true) EOF syntax error at line 1: `<<EOF' here-document not contained within command substitution The regression is caused by an error check that was added to make the following script causes a syntax error (because the here-document isn't completed inside of the command substitution): $(true << EOF) EOF src/cmd/ksh93/sh/lex.c: - Only throw an error when a here-document in a command substitution isn't completed inside of the command substitution. src/cmd/ksh93/tests/heredoc.sh: - Add a regression test for running a command substitution on the same line as a here-document. - Add a missed regression test for using here-documents in command substitutions. This is the original bug that was fixed in ksh93u+ 2011-04-15 (it is why the error message was added), but a regression test for here-documents in command substitutions wasn't added in that version. This bugfix was backported from ksh93v- 2013-10-10-alpha.
This commit is contained in:
parent
f207cd5787
commit
6e515f1d45
4 changed files with 20 additions and 2 deletions
|
@ -1563,6 +1563,7 @@ static int comsub(register Lex_t *lp, int endtok)
|
|||
{
|
||||
register int n,c,count=1;
|
||||
register int line=lp->sh->inlineno;
|
||||
struct ionod *inheredoc = lp->heredoc;
|
||||
char *first,*cp=fcseek(0),word[5];
|
||||
int off, messages=0, assignok=lp->assignok, csub;
|
||||
struct lexstate save;
|
||||
|
@ -1689,7 +1690,7 @@ done:
|
|||
lp->lexd.dolparen--;
|
||||
lp->lex = save;
|
||||
lp->assignok = (endchar(lp)==RBRACT?assignok:0);
|
||||
if(lp->heredoc)
|
||||
if(lp->heredoc && !inheredoc)
|
||||
errormsg(SH_DICT,ERROR_exit(SYNBAD),e_lexsyntax5,lp->sh->inlineno,lp->heredoc->ioname);
|
||||
return(messages);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue