diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-03-13 03:52:35 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-03-14 00:48:34 +0100 |
commit | 6a8d6d4b5021af6c90ca0da806691987df449469 (patch) | |
tree | db4984608a96ce279e25c580895d4084d2b1e24f /ui-tree.c | |
parent | 892ba8c3cc0617d2087a2337d8c6e71524d7b49c (diff) | |
download | cgit-6a8d6d4b5021af6c90ca0da806691987df449469.tar.gz cgit-6a8d6d4b5021af6c90ca0da806691987df449469.tar.xz |
global: use proper accessors for maybe_tree
A previous commit changed ->tree to ->maybe_tree throughout, which may
have worked at the time, but wasn't safe, because maybe_tree is loaded
lazily. This manifested itself in crashes when using the "follow" log
feature. The proper fix is to use the correct contextual accessors
everytime we want access to maybe_tree. Thankfully, the commit.cocci
script takes care of creating mostly-correct patches that we could then
fix up, resulting in this commit here.
Fixes: 255b78f ("git: update to v2.18.0")
Reviewed-by: Christian Hesse <mail@eworm.de>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui-tree.c')
-rw-r--r-- | ui-tree.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -370,12 +370,14 @@ void cgit_print_tree(const char *rev, char *path) walk_tree_ctx.curr_rev = xstrdup(rev); if (path == NULL) { - ls_tree(&commit->maybe_tree->object.oid, NULL, &walk_tree_ctx); + ls_tree(get_commit_tree_oid(commit), NULL, &walk_tree_ctx); goto cleanup; } - read_tree_recursive(the_repository, commit->maybe_tree, "", 0, 0, - &paths, walk_tree, &walk_tree_ctx); + read_tree_recursive(the_repository, + repo_get_commit_tree(the_repository, commit), + "", 0, 0, + &paths, walk_tree, &walk_tree_ctx); if (walk_tree_ctx.state == 1) ls_tail(); else if (walk_tree_ctx.state == 2) |