--- src/cmd/ksh93/sh/lex.c +++ src/cmd/ksh93/sh/lex.c 2013-02-26 12:21:11.618820739 +0100 @@ -1559,6 +1559,7 @@ static int comsub(register Lex_t *lp, in register int line=lp->sh->inlineno; char *first,*cp=fcseek(0),word[5]; int off, messages=0, assignok=lp->assignok, csub; + struct ionod *inheredoc = lp->heredoc; struct lexstate save; save = lp->lex; csub = lp->comsub; @@ -1683,7 +1684,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); }