]> git.ipfire.org Git - thirdparty/git.git/commitdiff
merge-ort: fix type of local 'clean' var in handle_content_merge ()
authorElijah Newren <newren@gmail.com>
Wed, 19 Jun 2024 03:00:15 +0000 (03:00 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 20 Jun 2024 17:35:24 +0000 (10:35 -0700)
handle_content_merge() returns an int.  Every caller of
handle_content_merge() expects an int.  However, we declare a local
variable 'clean' that we use for the return value to be unsigned.  To
make matters worse, we also assign 'clean' the return value of
merge_submodule() in one codepath, which is defined to return an int.
It seems that the only reason to have 'clean' be unsigned was to allow a
cutesy bit manipulation operation to be well-defined.  Fix the type of
the 'clean' local in handle_content_merge().

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
merge-ort.c

index dc62aaf6d113b5a0f3ecadab4e49949fc8b7047b..be0f5bc3838574fb8ef76e5321e30b1ae8f294bb 100644 (file)
@@ -2109,7 +2109,7 @@ static int handle_content_merge(struct merge_options *opt,
         * merges, which happens for example with rename/rename(2to1) and
         * rename/add conflicts.
         */
-       unsigned clean = 1;
+       int clean = 1;
 
        /*
         * handle_content_merge() needs both files to be of the same type, i.e.
@@ -2184,7 +2184,8 @@ static int handle_content_merge(struct merge_options *opt,
                free(result_buf.ptr);
                if (ret)
                        return -1;
-               clean &= (merge_status == 0);
+               if (merge_status > 0)
+                       clean = 0;
                path_msg(opt, INFO_AUTO_MERGING, 1, path, NULL, NULL, NULL,
                         _("Auto-merging %s"), path);
        } else if (S_ISGITLINK(a->mode)) {