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

[PATCH 0/2] line-log: small fixes

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Aug 18, 2025, 11:13 UTC
Message-ID
<20250818111310.1283932-1-szeder.dev@gmail.com>
On Thu, May 02, 2024 at 09:29:04PM +0300, Evgeni Chasnovski wrote:
Show 28 quoted lines
> Calling `git log` with several `-L` flags can result in an error.
> 
> Steps to reproduce (on Linux):
> - Set up repo with a history:
>     - `mkdir log-line-assert`
>     - `cd log-line-assert`
>     - `git init`
>     - `echo "Line 1\nLine 2" > file`
>     - `git add .`
>     - `git commit -m 'Commit 1'`
>     - `echo "Line 3\nLine 4\nLine 5" >> file`
>     - `git add .`
>     - `git commit -m 'Commit 2'`
> - Execute the following command: `git log -L2,2:file -L4,4:file`
> 
> # What did you expect to happen? (Expected behavior)
> 
> Show log with evolution of lines 2 and 4.
> 
> # What happened instead? (Actual behavior)
> 
> An error with the following text:
> 
> ```
> git: line-log.c:73: range_set_append: Assertion `rs->nr == 0 ||
> rs->ranges[rs->nr-1].end <= a' failed.
> zsh: IOT instruction (core dumped)  git log -L2,2:file -L4,4:file
> ```
Thanks for reporting this issue!

As it turns out, merely specifying more than one line range is insufficient to trigger this assertion error, we need a rather specific interaction between the line numbers of two line ranges and a diff range.

The first patch fixes this issue, along with a couple of similar bugs to make that command really work, because once the assertion error was fixed we ended up in an endless loop, and once that was fixed the output was wrong...

The second patch fixes another line-log output issue that I just happened to stumble upon while testing the fixes in the first patch.

SZEDER Gábor (2):
  line-log: fix assertion error
  line-log: show all line ranges touched by the same diff range
 line-log.c                               | 15 +++-
 t/t4211-line-log.sh                      |  2 +
 t/t4211/sha1/expect.multiple             |  6 ++
 t/t4211/sha1/expect.no-assertion-error   | 90 ++++++++++++++++++++++++
 t/t4211/sha1/expect.two-ranges           |  6 ++
 t/t4211/sha256/expect.multiple           |  6 ++
 t/t4211/sha256/expect.no-assertion-error | 90 ++++++++++++++++++++++++
 t/t4211/sha256/expect.two-ranges         |  6 ++
 8 files changed, 218 insertions(+), 3 deletions(-)
 create mode 100644 t/t4211/sha1/expect.no-assertion-error
 create mode 100644 t/t4211/sha256/expect.no-assertion-error
-- 
2.51.0.rc2.346.g6515629ae9
Next: SZEDER Gábor
Message 1 of 5 in “line-log: small fixes”
  1. 0/2 line-log: small fixesSZEDER Gábor, Aug 18, 2025
  2. 1/2 line-log: fix assertion errorSZEDER Gábor, Aug 18, 2025
  3. Junio C HamanoAug 18, 2025
  4. 2/2 line-log: show all line ranges touched by the same diff rangeSZEDER Gábor, Aug 18, 2025
  5. SZEDER GáborAug 18, 2025

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.