On Thursday 09 August 2001 20:37, Cliff Woolley wrote:
> 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.
Actually, they are still necessary. Basically, it is still possible to have an error
during the
read, so we need to have a value returned to the caller.
Ryan
_____________________________________________________________________________
Ryan Bloom [EMAIL PROTECTED]
Covalent Technologies [EMAIL PROTECTED]
-----------------------------------------------------------------------------