From: Patrick Steinhardt Date: Tue, 21 Oct 2025 14:15:52 GMT Subject: [PATCH v5 04/12] replay: parse commits before dereferencing them Message-ID: <20251021-b4-pks-history-builtin-v5-4-78d23f578fe6@pks.im> In-Reply-To: <20251021-b4-pks-history-builtin-v5-0-78d23f578fe6@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 13d75d80543..c3628d2488b 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.1.851.g4ebd6896fd.dirty