Re: [PATCH] range-diff: support reading mbox files
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Nov 17, 2022, 18:24 UTC
- Message-ID
- <221117.86leo9h20m.gmgdl@evledraar.gmail.com>
- In-Reply-To
- <pull.1420.git.1668536405563.gitgitgadget@gmail.com>
On Tue, Nov 15 2022, Johannes Schindelin via GitGitGadget wrote:
Show 15 quoted lines
> + if (starts_with(line, "diff --git ")) {
> + struct patch patch = { 0 };
> + struct strbuf root = STRBUF_INIT;
> + int linenr = 0;
> + int orig_len;
> +
> + state = MBOX_IN_DIFF;
> + old_count = new_count = 0;
> + strbuf_addch(&buf, '\n');
> + if (!util->diff_offset)
> + util->diff_offset = buf.len;
> + line[len - 1] = '\n';
> + orig_len = len;
> + len = parse_git_diff_header(&root, &linenr, 1, line,
> + len, size, &patch);Try this with SANITIZE=leak, e.g. this seems to fix 1/4 leaks that pop
up if you try the command noted in the patch:
diff --git a/range-diff.c b/range-diff.c
index 77fa9b970b1..7ff33f92e39 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -142,6 +142,7 @@ static int read_mbox(const char *path, struct string_list *list)
orig_len = len;
len = parse_git_diff_header(&root, &linenr, 1, line,
len, size, &patch);
+ free(patch.def_name);
if (len < 0) {
error(_("could not parse git header '%.*s'"),
orig_len, line);Maybe it really should segfault, I didn't check carefully, but your test passes with SANITIZE=address with this, so if so it's missing coverage...