On Mon, Jun 21, 2021 at 04:21:40PM +0200, Denys Vlasenko wrote: > > > diff --git a/src/parser.c b/src/parser.c > > index 3c80d17..13c2df5 100644 > > --- a/src/parser.c > > +++ b/src/parser.c > > @@ -1252,7 +1252,8 @@ varname: > > do { > > STPUTC(c, out); > > c = pgetc_eatbnl(); > > - } while (!subtype && is_digit(c)); > > + } while ((subtype <= 0 || subtype >= VSLENGTH) && > > + is_digit(c)); > > ... you use (subtype == 0 || subtype == VSLENGTH) here. > Also, (subtype == 0 || subtype == VSLENGTH) is less confusing: > it says "loop if ${VAR} or ${#VAR} syntax", whereas <= >= > are a bit misleading. Yes it looks a bit confusing, but it turns into a single branch instead of two. Perhaps I should add a helper function for it. Thanks, -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt