On Wed, 9 Jun 2004, Allan Edwards wrote:

> +            }
> +            else {
> +                /* this was a zero length response, remove gzip header bucket then 
> pass down the EOS */
> +                APR_BUCKET_REMOVE(APR_BRIGADE_FIRST(ctx->bb));
> +                APR_BUCKET_REMOVE(e);
> +                APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
> +                return ap_pass_brigade(f->next, ctx->bb);
> +            }

I haven't looked at the entire context of this, but if you remove a bucket
(brigade_first(ctx->bb) from a brigade without deleting it and without
having any extra pointers to it, you'll leak memory.

Also, what happens if e *is* the first bucket in the brigade?  Can that
occur?  I think that by coincidence given the implementation of
APR_BUCKET_REMOVE, nothing bad would happen by double-removing a given
bucket twice in a row, but in general that seems like a bad idea and
should be avoided.

--Cliff

Reply via email to