last-modified: fix memory leak when more than one commit is given

When more than one commit is given, the function
populate_paths_from_revs() leaks a `struct pathspec`. Plug it.

Signed-off-by: Toon Claes <toon@iotcl.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Toon Claes 2026-01-30 15:26:36 +01:00 committed by Junio C Hamano
parent 85329e31dd
commit e2505ec170
1 changed files with 8 additions and 4 deletions

View File

@ -123,7 +123,7 @@ static void add_path_from_diff(struct diff_queue_struct *q,

static int populate_paths_from_revs(struct last_modified *lm)
{
int num_interesting = 0;
int num_interesting = 0, ret = 0;
struct diff_options diffopt;

/*
@ -145,16 +145,20 @@ static int populate_paths_from_revs(struct last_modified *lm)
if (obj->item->flags & UNINTERESTING)
continue;

if (num_interesting++)
return error(_("last-modified can only operate on one commit at a time"));
if (num_interesting++) {
ret = error(_("last-modified can only operate on one commit at a time"));
goto out;
}

diff_tree_oid(lm->rev.repo->hash_algo->empty_tree,
&obj->item->oid, "", &diffopt);
diff_flush(&diffopt);
}

out:
clear_pathspec(&diffopt.pathspec);

return 0;
return ret;
}

static void last_modified_emit(struct last_modified *lm,