summaryrefslogtreecommitdiffstats
path: root/merge-ort.c
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2024-06-19 05:00:16 +0200
committerJunio C Hamano <gitster@pobox.com>2024-06-20 19:35:24 +0200
commit5fadf1f93371204b82a02a30315f655a293aa7f5 (patch)
treed4c8f0e9ca56c402a1a23e10d59ce3d531e42626 /merge-ort.c
parentmerge-ort: fix type of local 'clean' var in handle_content_merge () (diff)
downloadgit-5fadf1f93371204b82a02a30315f655a293aa7f5.tar.xz
git-5fadf1f93371204b82a02a30315f655a293aa7f5.zip
merge-ort: clearer propagation of failure-to-function from merge_submodule
The 'clean' member variable is somewhat of a tri-state (1 = clean, 0 = conflicted, -1 = failure-to-determine), but we often like to think of it as binary (ignoring the possibility of a negative value) and use constructs like '!clean' to reflect this. However, these constructs can make codepaths more difficult to understand, unless we handle the negative case early and return pre-emptively; do that in handle_content_merge() to make the code a bit easier to read. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-ort.c')
-rw-r--r--merge-ort.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/merge-ort.c b/merge-ort.c
index be0f5bc383..d187c966c6 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -2193,6 +2193,8 @@ static int handle_content_merge(struct merge_options *opt,
clean = merge_submodule(opt, pathnames[0],
two_way ? null_oid() : &o->oid,
&a->oid, &b->oid, &result->oid);
+ if (clean < 0)
+ return -1;
if (opt->priv->call_depth && two_way && !clean) {
result->mode = o->mode;
oidcpy(&result->oid, &o->oid);