On Thu, 9 May 2019 19:26:33 -0700 Yury Norov <yury.no...@gmail.com> wrote:

> Hi Andy,
> 
> Thanks for thorough review.
> 
> On Wed, May 08, 2019 at 11:46:32AM +0300, Andy Shevchenko wrote:
> > On Tue, Apr 30, 2019 at 06:06:34PM -0700, Yury Norov wrote:
> > > bitmap_parse() is ineffective and full of opaque variables and opencoded
> > > parts. It leads to hard understanding and usage of it. This rework
> > > includes:
> > >  - remove bitmap_shift_left() call from the cycle. Now it makes the
> > >    complexity of the algorithm as O(nbits^2). In the suggested approach
> > >    the input string is parsed in reverse direction, so no shifts needed;
> > >  - relax requirement on a single comma and no white spaces between chunks.
> > >    It is considered useful in scripting, and it aligns with
> > >    bitmap_parselist();
> > >  - split bitmap_parse() to small readable helpers;
> > >  - make an explicit calculation of the end of input line at the
> > >    beginning, so users of the bitmap_parse() won't bother doing this.
> > 
> > > +static inline bool in_str(const char *start, const char *ptr)
> > > +{
> > > + return start <= ptr;
> > > +}
> > > +
> > 
> > The explicit use of the conditional is better.
> > 
> > -- 
> > With Best Regards,
> > Andy Shevchenko
> 
> I still think that is_str() is more verbose, but it's minor issue
> anyways, so I obey. Below is the patch that removes the function.
> It's up to Andrew finally, either apply it or not.

I agree with Andy - open-coding the comparisons makes it easier to
understand the varoius in_str() callsites, IMO.

> @@ -653,7 +648,7 @@ int bitmap_parse(const char *start, unsigned int buflen,
>       u32 *bitmap = (u32 *)maskp;
>       int unset_bit;
>  
> -     while (in_str(start, (end = bitmap_find_region_reverse(start, end)))) {
> +     while (start <= (end = bitmap_find_region_reverse(start, end))) {

This statement hurts my little brain.  Can it be broken into easier to digest
chunks?

>               if (!chunks--)
>                       return -EOVERFLOW;
>  

Reply via email to