Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: basesrc/bin/sh



Christos Zoulas <christos%netbsd.org@localhost> writes:

> cvs rdiff -r1.50 -r1.51 basesrc/bin/sh/parser.c

> Index: basesrc/bin/sh/parser.c
> diff -u basesrc/bin/sh/parser.c:1.50 basesrc/bin/sh/parser.c:1.51
> --- basesrc/bin/sh/parser.c:1.50      Tue Feb 12 08:39:10 2002
> +++ basesrc/bin/sh/parser.c   Tue Feb 12 22:32:35 2002
> @@ -877,6 +879,21 @@
>  #define PARSEBACKQNEW()      {oldstyle = 0; goto parsebackq; 
> parsebackq_newreturn:;}
>  #define      PARSEARITH()    {goto parsearith; parsearith_return:;}
>  
> +#define ISDBLQUOTE() ((varnest < 32) ? (dblquote & (1 << varnest)) : \
> +    (dblquotep[varnest / 32] & (1 << (varnest % 32))))


>From this definition, dblquotep[0] isn't used even if maxnest is
greater than 32, but ...

>                       varnest++;
> +                     if (varnest >= maxnest) {
> +                             maxnest += 32;
> +                             dblquotep = ckrealloc(dblquotep, maxnest / 8);
> +                             if (maxnest == 64)
> +                                     *dblquotep = dblquote;

...here, dblquotep[0] is initialized with dblquote.  It looks
inconsistient.

> @@ -1082,6 +1115,8 @@
>       backquotelist = bqlist;
>       grabstackblock(len);
>       wordtext = out;
> +     if (dblquotep != NULL)
> +         ckfree(dblquotep);
>       return lasttoken = TWORD;
>  /* end of readtoken routine */
>  

There are more return statements in this function.  Is it known to be
safe without free'ing dblquotep there (it looks like one of them isn't
compiled tho)?

enami.



Home | Main Index | Thread Index | Old Index