]> git.ipfire.org Git - thirdparty/git.git/commitdiff
xdiff/xdl_cleanup_records: make execution of action easier to follow
authorEzekiel Newren <ezekielnewren@gmail.com>
Wed, 29 Apr 2026 22:08:15 +0000 (22:08 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Apr 2026 00:16:51 +0000 (09:16 +0900)
Helped-by: Phillip Wood
Signed-off-by: Ezekiel Newren <ezekielnewren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff/xprepare.c

index ddd05776761d2c1eeb4bdaf6fbf26d3e66bf83d7..beef711067b612d32f26280b3b34683c41fa61e7 100644 (file)
@@ -336,24 +336,44 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
         */
        xdf1->nreff = 0;
        for (i = xdf1->dstart; i <= xdf1->dend; i++) {
-               if (action1[i] == KEEP ||
-                   (action1[i] == INVESTIGATE && !xdl_clean_mmatch(action1, i, xdf1->dstart, xdf1->dend))) {
+               uint8_t action = action1[i];
+
+               if (action == INVESTIGATE) {
+                       if (!xdl_clean_mmatch(action1, i, xdf1->dstart, xdf1->dend))
+                               action = KEEP;
+                       else
+                               action = DISCARD;
+               }
+
+               if (action == KEEP) {
                        xdf1->reference_index[xdf1->nreff++] = i;
-                       /* changed[i] remains false, i.e. keep */
-               } else
+                       /* changed[i] remains false */
+               } else if (action == DISCARD) {
                        xdf1->changed[i] = true;
-                       /* i.e. discard */
+               } else {
+                       BUG("Illegal state for action");
+               }
        }
 
        xdf2->nreff = 0;
        for (i = xdf2->dstart; i <= xdf2->dend; i++) {
-               if (action2[i] == KEEP ||
-                   (action2[i] == INVESTIGATE && !xdl_clean_mmatch(action2, i, xdf2->dstart, xdf2->dend))) {
+               uint8_t action = action2[i];
+
+               if (action == INVESTIGATE) {
+                       if (!xdl_clean_mmatch(action2, i, xdf2->dstart, xdf2->dend))
+                               action = KEEP;
+                       else
+                               action = DISCARD;
+               }
+
+               if (action == KEEP) {
                        xdf2->reference_index[xdf2->nreff++] = i;
-                       /* changed[i] remains false, i.e. keep */
-               } else
+                       /* changed[i] remains false */
+               } else if (action == DISCARD) {
                        xdf2->changed[i] = true;
-                       /* i.e. discard */
+               } else {
+                       BUG("Illegal state for action");
+               }
        }
 
 cleanup: