Thanks for your comments.

On Wednesday 23 September 2009, Ruediger Pluem wrote:
> --- modules/http/chunk_filter.c (Revision 818232)
> +++ modules/http/chunk_filter.c (Arbeitskopie)
> @@ -49,11 +49,11 @@
>  #define ASCII_CRLF  "\015\012"
>  #define ASCII_ZERO  "\060"
>      conn_rec *c = f->r->connection;
> -    apr_bucket_brigade *more;
> +    apr_bucket_brigade *more, *tmp;
>      apr_bucket *e;
>      apr_status_t rv;
> 
> -    for (more = NULL; b; b = more, more = NULL) {
> +    for (more = tmp = NULL; b; tmp = b, b = more, more = NULL) {
>          apr_off_t bytes = 0;
>          apr_bucket *eos = NULL;
>          apr_bucket *flush = NULL;
> @@ -85,7 +85,8 @@
>              if (APR_BUCKET_IS_FLUSH(e)) {
>                  flush = e;
>                  if (e != APR_BRIGADE_LAST(b)) {
> -                    more = apr_brigade_split(b,
>  APR_BUCKET_NEXT(e)); +                    more =
>  apr_brigade_split_ex(b, APR_BUCKET_NEXT(e), tmp); +               
>      tmp = NULL;
>                  }
>                  break;
>              }
> @@ -105,7 +106,8 @@
>                       * block so we pass down what we have so far.
>                       */
>                      bytes += len;
> -                    more = apr_brigade_split(b,
>  APR_BUCKET_NEXT(e)); +                    more =
>  apr_brigade_split_ex(b, APR_BUCKET_NEXT(e), tmp); +               
>      tmp = NULL;
>                      break;
>                  }
>                  else {
> 
> What is the point here? tmp is always NULL when passed to
>  apr_brigade_split_ex so apr_brigade_split_ex == apr_brigade_split

You missed the tmp = b at the beginning of the loop. The tmp = NULL 
lines were actually not needed. I have changed this a bit to hopefully 
make it clearer and commited the patch together with the other changes 
you suggested.

Cheers,
Stefan

Reply via email to