Hi Matthew,
I'm unable to judge the patch, but appreciate your quick fix. Thanks a
lot! I'm looking forward to the next release, in which it is contained.

I just occurred to me, that the problem also exists for ". Is this
covered with your patch as well?

Richard

cho...@jtan.com wrote:
> Richard Ulmer writes:
> > Hi,
> > when there is a single ' in a comment within a subshell, I get this
> > error: foo[6]: no closing quote
> >
> > Here is an example script to reproduce the problem:
> >
> > foo=$(
> >     # It's bar:
> >     echo bar
> > )
> > echo $foo
> 
> This is certainly not the best way to do this but it does the job:
> 
> ~/src/ksh       [OpenBSD 6.6]
> [ksh]flask@void$ /bin/ksh
> void$ foo=$(
> >   # quote: '
> >   echo bar
> > )
> > ^D
> /bin/ksh: no closing quote
> ~/src/ksh       [OpenBSD 6.6]
> [ksh]flask@void$ ./ksh
> void$ foo=$(
> >   # quote: '
> >   echo bar
> > )
> void$ echo $foo
> bar
> void$
> 
> In particular it just reeks of kludge, which I'm not happy with
> because according to the comment two-dozen lines up it's already a
> kludge. The loop is lifted from the beginning of the same function,
> where regular comments are skipped.
> 
> Matthew
> 
> --- lex.c.~1.78.~     Mon Jan 15 16:58:05 2018
> +++ lex.c     Sat Dec 14 10:55:06 2019
> @@ -496,6 +496,12 @@
>                                       statep->ls_scsparen.csstate = 4;
>                                       ignore_backslash_newline++;
>                                       break;
> +                                case '#':
> +                                        ignore_backslash_newline++;
> +                                        while ((c = getsc()) != '\0' && c != 
> '\n')
> +                                                ;
> +                                        ignore_backslash_newline--;
> +                                        break;
>                               }
>                               break;
>  

Reply via email to