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>
This commit is contained in:
Toon Claes
2026-01-30 15:26:36 +01:00
committed by Junio C Hamano
parent 85329e31dd
commit e2505ec170

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,