summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2024-02-23 09:34:21 +0100
committerJunio C Hamano <gitster@pobox.com>2024-02-23 19:19:39 +0100
commitf30e6c32d8a27760915922b1ddf76f95f11539bb (patch)
tree334432972c83bcb2310488d3ead7d08085292015
parentmerge-tree: fail with a non-zero exit code on missing tree objects (diff)
downloadgit-f30e6c32d8a27760915922b1ddf76f95f11539bb.tar.xz
git-f30e6c32d8a27760915922b1ddf76f95f11539bb.zip
merge-ort: do check `parse_tree()`'s return value
The previous commit fixed a bug where a missing tree was reported, but not treated as an error. This patch addresses the same issue for the remaining two callers of `parse_tree()`. This change is not accompanied by a regression test because the code in question is only reached at the `checkout` stage, i.e. after the merge has happened (and therefore the tree objects could only be missing if the disk had gone bad in that short time window, or something similarly tricky to recreate in the test suite). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--merge-ort.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/merge-ort.c b/merge-ort.c
index c37fc035f1..79d9e18f63 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -4379,9 +4379,11 @@ static int checkout(struct merge_options *opt,
unpack_opts.verbose_update = (opt->verbosity > 2);
unpack_opts.fn = twoway_merge;
unpack_opts.preserve_ignored = 0; /* FIXME: !opts->overwrite_ignore */
- parse_tree(prev);
+ if (parse_tree(prev) < 0)
+ return -1;
init_tree_desc(&trees[0], prev->buffer, prev->size);
- parse_tree(next);
+ if (parse_tree(next) < 0)
+ return -1;
init_tree_desc(&trees[1], next->buffer, next->size);
ret = unpack_trees(2, trees, &unpack_opts);