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

[PATCH] bisect: always call setup_revisions after init_revisions

From
Jeff King <peff@peff.net>
Date
Jun 16, 2016, 23:37 UTC
Message-ID
<20160616233719.GB15013@sigill.intra.peff.net>
In-Reply-To
<xmqqporh3rqu.fsf@gitster.mtv.corp.google.com>

The former initializes the rev_info struct to default values, and the latter parsers any command-line arguments and finalizes the struct.

In e22278c (bisect: display first bad commit without forking a new process, 2009-05-28), a show_diff_tree() was added that calls the former but not the latter. It doesn't have any arguments to parse, but it still should do the finalizing step.

This may have caused other minor bugs over the years, but it became much more prominent after fe37a9c (pretty: allow tweaking tabwidth in --expand-tabs, 2016-03-29). That leaves the expected tab width as "-1", rather than the true default of "8". When we see a commit with tabs to be expanded, we end up trying to add (size_t)-1 spaces to a strbuf, which complains about the integer overflow.

The fix is easy: just call setup_revisions() with no arguments.

Signed-off-by: Jeff King <peff@peff.net>
---
Same patch as earlier, now with 100% more commit message.

I didn't add a test, as it seemed weirdly specific to be checking "can bisect show a commit with tabs in it". I.e., it's not likely to actually regress in this specific way again.

 bisect.c | 1 +
 1 file changed, 1 insertion(+)
diff --git a/bisect.c b/bisect.c
index 6d93edb..dc13319 100644
--- a/bisect.c
+++ b/bisect.c
@@ -890,6 +890,7 @@ static void show_diff_tree(const char *prefix, struct commit *commit)
 	if (!opt.diffopt.output_format)
 		opt.diffopt.output_format = DIFF_FORMAT_RAW;
 
+	setup_revisions(0, NULL, &opt, NULL);
 	log_tree_commit(&opt, commit);
 }
 
-- 
2.9.0.165.g4aacdc3
Previous: Junio C HamanoNext: Junio C Hamano
Message 6 of 8 in “final git bisect step leads to: "fatal: you want to use way too much memory"”
  1. Markus TrippelsdorfJun 16, 2016
  2. Markus TrippelsdorfJun 16, 2016
  3. Markus TrippelsdorfJun 16, 2016
  4. Jeff KingJun 16, 2016
  5. Junio C HamanoJun 16, 2016
  6. bisect: always call setup_revisions after init_revisionsJeff King, Jun 16, 2016
  7. Junio C HamanoJun 17, 2016
  8. Jeff KingJun 17, 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.