From: Patrick Steinhardt Date: Wed, 01 Oct 2025 15:57:30 GMT Subject: [PATCH v4 04/12] replay: parse commits before dereferencing them Message-ID: <20251001-b4-pks-history-builtin-v4-4-8e61ddb86317@pks.im> In-Reply-To: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im> When looking up a commit it may not be parsed yet. Callers that wish to access the fields of `struct commit` have to call `repo_parse_commit()` first so that it is guaranteed to be populated. We didn't yet care about doing so, because code paths that lead to `pick_regular_commit()` in "builtin/replay.c" already implicitly parsed the commits. But now that the function is exposed to outside callers it's quite easy to get this wrong. Make the function easier to use by calling `repo_parse_commit()`. Signed-off-by: Patrick Steinhardt --- replay.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/replay.c b/replay.c index 13d75d8054..c3628d2488 100644 --- a/replay.c +++ b/replay.c @@ -90,6 +90,9 @@ struct commit *replay_pick_regular_commit(struct repository *repo, struct commit *base, *replayed_base; struct tree *pickme_tree, *base_tree; + if (repo_parse_commit(repo, pickme)) + return NULL; + base = pickme->parents->item; replayed_base = mapped_commit(replayed_commits, base, onto); -- 2.51.0.700.g236ee7b076.dirty