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

Re: [RFC PATCH, WAS: "weird diff output?" 0/2] implement better chunk heuristics

From
Jacob Keller <jacob.keller@gmail.com>
Date
Apr 15, 2016, 19:08 UTC
Message-ID
<CA+P7+xq7JqerLizg_5RLNGuWPaQL8QWUisjZm=ENcdaE7ZPMDg@mail.gmail.com>
In-Reply-To
<CAGZ79kZs33sJj+DPSS4FPoJTLqbCLpvSe_h9UUQM-dBe=8ExKw@mail.gmail.com>
On Fri, Apr 15, 2016 at 10:10 AM, Stefan Beller <sbeller@google.com> wrote:
Show 37 quoted lines
> On Fri, Apr 15, 2016 at 10:02 AM, Stefan Beller <sbeller@google.com> wrote:
>>> @@ -458,11 +458,11 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) {
>>>                          * the group.
>>>                          */
>>>                         while (ixs > 0 && xdl_hash_and_recmatch(recs, ixs - 1, ix - 1, flags)) {
>>> +                               emptylines += is_emptyline(recs[ix - 1]->ptr);
>>> +
>>>                                 rchg[--ixs] = 1;
>>>                                 rchg[--ix] = 0;
>>>
>>> -                               has_emptyline |=
>>> -                                       starts_with_emptyline(recs[ix]->ptr);
>>
>> How is this fixing the segfault bug?
>> From my understanding ix should have the same value here as ix-1 above.
>>
>>>                                 /*
>>>                                  * This change might have joined two change groups,
>>>                                  * so we try to take this scenario in account by moving
>>> @@ -492,9 +492,6 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) {
>>>                                 rchg[ixs++] = 0;
>>>                                 rchg[ix++] = 1;
>>>
>>> -                               has_emptyline |=
>>> -                                       starts_with_emptyline(recs[ix]->ptr);
>>> -
>>
>> Or would this fix the segfault bug?
>> I think we would need to have the check for empty lines
>> in both loops to be sure to cover the whole movable range.
>
> Actually we would only need to have the empty line count in the second loop as
> the first loop shifted it as much up(backwards) as possible, such that
> the hunk sits on one
> end of the movable range. The second loop would iterate over the whole
> range, so that
> would be the only place needed to count.
I agree that we can drop the first part and I am testing it now.

Thanks, Jake

Previous: Jacob KellerNext: Jacob Keller
Message 21 of 22 in “implement better chunk heuristics”
  1. 0/2 implement better chunk heuristicsJacob Keller, Apr 15, 2016
  2. 1/2 xdiff: add xdl_hash_and_recmatch helper functionJacob Keller, Apr 15, 2016
  3. Junio C HamanoApr 15, 2016
  4. Jacob KellerApr 15, 2016
  5. 2/2 xdiff: implement empty line chunk heuristicJacob Keller, Apr 15, 2016
  6. Stefan BellerApr 15, 2016
  7. Junio C HamanoApr 15, 2016
  8. Jacob KellerApr 15, 2016
  9. Junio C HamanoApr 15, 2016
  10. Jacob KellerApr 15, 2016
  11. Jacob KellerApr 15, 2016
  12. Junio C HamanoApr 15, 2016
  13. Jacob KellerApr 15, 2016
  14. Jacob KellerApr 15, 2016
  15. Stefan BellerApr 15, 2016
  16. Stefan BellerApr 15, 2016
  17. Junio C HamanoApr 15, 2016
  18. Stefan BellerApr 15, 2016
  19. Junio C HamanoApr 15, 2016
  20. Jacob KellerApr 15, 2016
  21. Jacob KellerApr 15, 2016
  22. Jacob KellerApr 15, 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.