]> git.ipfire.org Git - thirdparty/git.git/commitdiff
merge-ort: add a clear_internal_opts helper
authorElijah Newren <newren@gmail.com>
Thu, 3 Dec 2020 15:59:41 +0000 (15:59 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 13 Dec 2020 22:21:03 +0000 (14:21 -0800)
Move most of merge_finalize() into a new helper function,
clear_internal_opts().  This is a step to facilitate recursive merges,
as well as some future optimizations.

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

index ba3ce8d5d53e682a3e9536cb1ca473efda09ef5c..ced6be1f9f60194ee15a2dbcfb39dfcf7177aa7d 100644 (file)
@@ -221,6 +221,29 @@ static void free_strmap_strings(struct strmap *map)
        }
 }
 
+static void clear_internal_opts(struct merge_options_internal *opti,
+                               int reinitialize)
+{
+       assert(!reinitialize);
+
+       /*
+        * We marked opti->paths with strdup_strings = 0, so that we
+        * wouldn't have to make another copy of the fullpath created by
+        * make_traverse_path from setup_path_info().  But, now that we've
+        * used it and have no other references to these strings, it is time
+        * to deallocate them.
+        */
+       free_strmap_strings(&opti->paths);
+       strmap_clear(&opti->paths, 1);
+
+       /*
+        * All keys and values in opti->conflicted are a subset of those in
+        * opti->paths.  We don't want to deallocate anything twice, so we
+        * don't free the keys and we pass 0 for free_values.
+        */
+       strmap_clear(&opti->conflicted, 0);
+}
+
 static int err(struct merge_options *opt, const char *err, ...)
 {
        va_list params;
@@ -1169,22 +1192,7 @@ void merge_finalize(struct merge_options *opt,
 
        assert(opt->priv == NULL);
 
-       /*
-        * We marked opti->paths with strdup_strings = 0, so that we
-        * wouldn't have to make another copy of the fullpath created by
-        * make_traverse_path from setup_path_info().  But, now that we've
-        * used it and have no other references to these strings, it is time
-        * to deallocate them.
-        */
-       free_strmap_strings(&opti->paths);
-       strmap_clear(&opti->paths, 1);
-
-       /*
-        * All keys and values in opti->conflicted are a subset of those in
-        * opti->paths.  We don't want to deallocate anything twice, so we
-        * don't free the keys and we pass 0 for free_values.
-        */
-       strmap_clear(&opti->conflicted, 0);
+       clear_internal_opts(opti, 0);
        FREE_AND_NULL(opti);
 }