git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] Modified flag field type in rev_list_info struct in bisect.h. There is no need for flag field to be signed, as it is not supposed to be used as decimal.

From
Stefan Beller <sbeller@google.com>
Date
Mar 24, 2016, 23:04 UTC
Message-ID
<CAGZ79kaF42yCFWdvqqDSAZbWmUo0UVJGbXCci1LF=ne+cixZ0A@mail.gmail.com>
In-Reply-To
<CAPig+cQcviTXYAGBTATgYXoaPtvxxeOUtCGYkLyW5oTFvLjEUA@mail.gmail.com>
On Thu, Mar 24, 2016 at 3:56 PM, Eric Sunshine <sunshine@sunshineco.com> wrote:
Show 63 quoted lines
> On Thu, Mar 24, 2016 at 4:01 PM, work <motroniii@gmail.com> wrote:
>> On 03/24/2016 10:51 PM, Stefan Beller wrote:
>>> On Thu, Mar 24, 2016 at 12:41 PM, Motroni Igor <motroniii@gmail.com>
>>> wrote:
>>>> From: Pontifik <motroniii@gmail.com>
>>>
>>> Here is a good place to put reasoning for why this is a good idea.
>>> I see you have a long subject, so maybe we can shorten the first line
>>> (down to less than ~ 80 characters) and put the longer explanation
>>> here.
>>>
>>> How about:
>>>
>>>    bisect: use unsigned for flag field
>>>
>>>    The flags are usually used as a unsigned variable, because it makes
>>>    bit operations easier to follow.
>>
>> Yep, it's definitely a good idea to shorten subject in order to put more
>> explanations in body of a message.
>
> It is also very important is to explain that you audited all clients
> of this field and found that none of them treat the sign bit specially
> (for instance, by checking the value with '< 0' or some such),
> therefore such a change is safe, in addition to making the code
> clearer.
>
> As an example, a diligent reviewer may wonder why you changed this
> field to 'unsigned' but not the 'flags' variable in
> rev-list.c:show_bisect_vars() to which this field is assigned. This is
> something your re-roll of the patch should take into consideration.
>
>>>> diff --git a/bisect.h b/bisect.h
>>>> index acd12ef..a979a7f 100644
>>>> --- a/bisect.h
>>>> +++ b/bisect.h
>>>> @@ -16,7 +16,7 @@ extern struct commit_list *filter_skipped(struct
>>>> commit_list *list,
>>>>
>>>>   struct rev_list_info {
>>>>          struct rev_info *revs;
>>>> -       int flags;
>>>> +       unsigned int flags;
>>>
>>> You can also drop the int here and make it just
>>> unsigned.
>>
>> In fact, I just wanted to keep this code clear to understand (as I see
>> this). Unsigned short is also unsigned, but a reader should know that
>> "unsigned" type stands for "unsigned int". Anyway, I'll keep this in mind in
>> future, thanks a lot.
>
> While it's true that 'unsigned short' is indeed never negative, the
> clueful reader should never accidentally interpret bare 'unsigned' as
> anything other than the native word size. However, I think what Stefan
> really meant is that, in this code base, it is (somewhat) more common
> to declare these "flags" variables as 'unsigned' rather than 'unsigned
> int':
>
>     % git grep -E 'unsigned\s+flags' | wc -l
>     80
>     % git grep -E 'unsigned\s+int\s+flags' | wc -l
>     57

This is what I meant. (I did not give my grep terms as reasoning as they were not as exactly as yours. Redoing the search using your more exact terms however makes me wonder if my advice was the right thing.

% git grep -E 'unsigned\s+int\s+flags' ./*.h | wc -l 16 % git grep -E 'unsigned\s+flags' ./*.h | wc -l 17

So there is no pattern that the version without int is more common. Maybe my exposure to the code was accidentally in a way such that I ever only saw the version without int.

Previous: Eric SunshineNext: Junio C Hamano
Message 6 of 10 in “GSoC student”
  1. 0/2 GSoC studentMotroni Igor, Mar 24, 2016
  2. 1/2 Modified flag field type in rev_list_info struct in bisect.h. There is no need for flag field to be signed, as it is not supposed to be used as decimal.Motroni Igor, Mar 24, 2016
  3. Stefan BellerMar 24, 2016
  4. workMar 24, 2016
  5. Eric SunshineMar 24, 2016
  6. Stefan BellerMar 24, 2016
  7. Junio C HamanoMar 25, 2016
  8. workMar 25, 2016
  9. Eric SunshineMar 25, 2016
  10. 2/2 Just a minor commit to trigger Travis Ci buildMotroni Igor, Mar 24, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.