]> git.ipfire.org Git - thirdparty/git.git/commitdiff
apply: code simplification
authorJunio C Hamano <gitster@pobox.com>
Tue, 26 Dec 2023 23:32:18 +0000 (15:32 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 27 Dec 2023 05:20:32 +0000 (21:20 -0800)
Rewrite a bit hard-to-read ternary ?: expression into a cascade of
if/else.

Given that read-cache.c:add_index_entry() makes sure that the
.ce_mode member is filled with a reasonable value before placing a
cache entry in the index, if we see (ce_mode == 0), there is
something seriously wrong going on.  Catch such a bug and abort,
instead of silently ignoring such an entry and silently skipping
the check.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
apply.c

diff --git a/apply.c b/apply.c
index 6b1adccb2fedc7ed251b9724c2a4c3d6801c4a98..493a263a482e081c923ea05f9d9df9f649b7f821 100644 (file)
--- a/apply.c
+++ b/apply.c
@@ -3780,11 +3780,15 @@ static int check_preimage(struct apply_state *state,
        }
 
        if (!state->cached && !previous) {
-               if (!trust_executable_bit)
-                       st_mode = (*ce && (*ce)->ce_mode)
-                               ? (*ce)->ce_mode : patch->old_mode;
-               else
+               if (*ce && !(*ce)->ce_mode)
+                       BUG("ce_mode == 0 for path '%s'", old_name);
+
+               if (trust_executable_bit)
                        st_mode = ce_mode_from_stat(*ce, st->st_mode);
+               else if (*ce)
+                       st_mode = (*ce)->ce_mode;
+               else
+                       st_mode = patch->old_mode;
        }
 
        if (patch->is_new < 0)