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

Re: [PATCH] create_delta_index: simplify condition always evaluating to true

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Aug 15, 2013, 21:46 UTC
Message-ID
<CAPig+cQ5Y9irLk=9Bhz09c=5yzZEcyMKn2kbhcrO_zDpgmkhGw@mail.gmail.com>
In-Reply-To
<1376602462-32339-1-git-send-email-stefanbeller@googlemail.com>

On Thu, Aug 15, 2013 at 5:34 PM, Stefan Beller <stefanbeller@googlemail.com> wrote:

Show 15 quoted lines
> When checking the previous lines in that function, we can deduce that
> hsize must always be smaller than (1u<<31), since 506049c7df2c6
> (fix >4GiB source delta assertion failure), because entries is
> capped at an upper bound of 0xfffffffeU, so hsize contains a maximum
> value of 0x3fffffff, which is smaller than (1u<<31), so the value of
> 'i' will never be larger than 31.
>
> Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>
> ---
>
> Eric, thanks for reviewing my patch.
>
> I applied the first 2 proposals (deduce, entries), but I disagree on
> the third, so I reformulated the sentence, as I really meant the variable
> i and not it as a pronoun.

Thanks. Adding the quotes around 'i' makes your meaning clear. Without the quotes, apparently it was ambiguous, and my brain read it as a misspelling of 'it'.

Show 8 quoted lines
> Do I understand right, you're suggesting to remove the
> source code comment? I did this now, but I have a bad feeling with it.
>
> The change of this patch surely removes dead code as of now and makes it
> more readable. But also it could become alive again, once somebody
> changes things nearby and forgets about the assumption, hsize not
> exceeding a certain size. That's why I put a comment in there, so
> the future changes nearby may be more careful.

Indeed, I feel uncomfortable with the patch in general for the very reason that you state: it might become live again. Without the patch, the code remains safe without any extra effort. With this patch, even with the in-code comment, someone making changes needs to take special care. Sometimes it makes sense to leave safeties in place, even if they can't be triggered _today_; and safeties (such as i < 31) also serve as documentation.

Show 24 quoted lines
>
> Thanks,
> Stefan
>
>
>  diff-delta.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/diff-delta.c b/diff-delta.c
> index 93385e1..3797ce6 100644
> --- a/diff-delta.c
> +++ b/diff-delta.c
> @@ -155,7 +155,7 @@ struct delta_index * create_delta_index(const void *buf, unsigned long bufsize)
>                 entries = 0xfffffffeU / RABIN_WINDOW;
>         }
>         hsize = entries / 4;
> -       for (i = 4; (1u << i) < hsize && i < 31; i++);
> +       for (i = 4; (1u << i) < hsize; i++);
>         hsize = 1 << i;
>         hmask = hsize - 1;
>
> --
> 1.8.4.rc3.1.gc1ebd90
>
Previous: Stefan BellerNext: Nicolas Pitre
Message 4 of 14 in “create_delta_index: simplify condition always evaluating to true”
  1. create_delta_index: simplify condition always evaluating to trueStefan Beller, Aug 15, 2013
  2. Eric SunshineAug 15, 2013
  3. create_delta_index: simplify condition always evaluating to trueStefan Beller, Aug 15, 2013
  4. Eric SunshineAug 15, 2013
  5. Nicolas PitreAug 16, 2013
  6. Philip OakleyAug 16, 2013
  7. create_delta_index: simplify condition always evaluating to trueStefan Beller, Aug 16, 2013
  8. Philip OakleyAug 17, 2013
  9. Philip OakleyAug 15, 2013
  10. Junio C HamanoAug 15, 2013
  11. Stefan BellerAug 15, 2013
  12. Nicolas PitreAug 16, 2013
  13. brian m. carlsonAug 16, 2013
  14. Eric SunshineAug 16, 2013

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.