On Thu, 9 Aug 2001, Doug MacEachern wrote:

> Index: srclib/apr-util/buckets/apr_brigade.c
> ===================================================================
> RCS file: /home/cvs/apr-util/buckets/apr_brigade.c,v
> retrieving revision 1.22
> diff -u -r1.22 apr_brigade.c
> --- srclib/apr-util/buckets/apr_brigade.c     2001/08/08 22:24:04     1.22
> +++ srclib/apr-util/buckets/apr_brigade.c     2001/08/10 03:18:37
> @@ -181,7 +181,7 @@
>              }
>          }
>          if (point == e->length) {
> -            *after_point = APR_BUCKET_NEXT(e);
> +            *after_point = e;
>              return APR_SUCCESS;
>          }
>          point -= e->length;
>

I haven't looked at the rest of the patch yet, but I just glanced at this
part and can tell you it isn't right.  If point==e->length, that means
that the partition that was requested is at the end of the data in the
current bucket.  brigade_partition is supposed to make sure that there is
a bucket boundary at the requested offset, and after_point is the first
bucket AFTER that offset.  So APR_BUCKET_NEXT(e) is definitely the right
thing here.

The only reason Ryan set it to e in the other two places is that they're
error conditions and e might not have been fully read, although this isn't
really necessary any more since Ryan reverted his patch to allow
nonblocking reads.

--Cliff

--------------------------------------------------------------
   Cliff Woolley
   [EMAIL PROTECTED]
   Charlottesville, VA


Reply via email to