Re: [PATCH v4] format-patch: allow a non-integral version numbers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 16, 2021 at 1:48 AM ZheNing Hu <adlternative@xxxxxxxxx> wrote:
> Eric Sunshine <sunshine@xxxxxxxxxxxxxx> 于2021年3月16日周二 上午7:41写道:
> > > +               strtol_i(reroll_count_string, 10, &reroll_count);
> >
> > This code can be confusing to readers since it appears to ignore the
> > result of strtol_i() [...]
> > [...] I think it would be clearer if you move the strtol_i()
> > call into the diff_title() function since -- following your changes --
> > that function is the only code which cares whether `reroll_count` can
> > be parsed as a number (the rest of the code, after your change, just
> > uses it as a string).
>
> Well, The reason `strtol_i` does not check the return value is that
> `strtol_i` will
> only modify the value of `reroll_count` if the `reroll_count_string`
> we provide is
>  an integer string, so if `reroll_count_string` is not an integer string, then
> `reroll_count` will remain -1, and then `diff_title` will only execute
>
>         if (reroll_count <= 0)
>                 strbuf_addstr(sb, generic);
>
> So don't need check strtol_i return value.

Yes, I understand the reason, but it is not easy for someone new to
this code to figure it out without looking at diff_title() and its
callers. The place where the return value of strtol_i() is ignored is
very far removed from the place where the value of `reroll_count` is
consumed in diff_title(), so it's not obvious to the reader how this
is all supposed to work. If you move strtol_i() into diff_title(),
then the parsing and the consuming of that value happen in the same
place, making it easier to understand.

> But what you said to put
> `strtol_i` in
> `diff_title` is indeed a good idea. Of course, we need to modify the declaration
>  and parameters of `diff_title`.

Yes, it is a very minor modification to diff_title(), changing
`reroll_count` from int to string.

Moving the parsing into diff_title() also allows you to use the
simpler name `reroll_count` for the string variable in cmd_fmt_patch()
rather than the longer `reroll_count_string`; just change
`reroll_count` from int to string.



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux