]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/helper: fix leaks in "reach" test tool
authorPatrick Steinhardt <ps@pks.im>
Tue, 5 Nov 2024 06:16:46 +0000 (07:16 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 5 Nov 2024 06:37:51 +0000 (22:37 -0800)
The "reach" test tool doesn't bother to clean up any of its allocated
resources, causing various leaks. Plug them.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/helper/test-reach.c
t/t6600-test-reach.sh

index 995e382863ac969de23b290188b506e3c129b0f3..84deee604adb4ba28150de8356ad0fe318ecbb35 100644 (file)
@@ -127,10 +127,12 @@ int cmd__reach(int ac, const char **av)
                        exit(128);
                printf("%s(A,X):\n", av[1]);
                print_sorted_commit_ids(list);
+               free_commit_list(list);
        } else if (!strcmp(av[1], "reduce_heads")) {
                struct commit_list *list = reduce_heads(X);
                printf("%s(X):\n", av[1]);
                print_sorted_commit_ids(list);
+               free_commit_list(list);
        } else if (!strcmp(av[1], "can_all_from_reach")) {
                printf("%s(X,Y):%d\n", av[1], can_all_from_reach(X, Y, 1));
        } else if (!strcmp(av[1], "can_all_from_reach_with_flag")) {
@@ -153,6 +155,7 @@ int cmd__reach(int ac, const char **av)
                        filter.with_commit_tag_algo = 0;
 
                printf("%s(_,A,X,_):%d\n", av[1], commit_contains(&filter, A, X, &cache));
+               clear_contains_cache(&cache);
        } else if (!strcmp(av[1], "get_reachable_subset")) {
                const int reachable_flag = 1;
                int i, count = 0;
@@ -176,7 +179,14 @@ int cmd__reach(int ac, const char **av)
                        die(_("too many commits marked reachable"));
 
                print_sorted_commit_ids(list);
+               free_commit_list(list);
        }
 
+       object_array_clear(&X_obj);
+       strbuf_release(&buf);
+       free_commit_list(X);
+       free_commit_list(Y);
+       free(X_array);
+       free(Y_array);
        return 0;
 }
index 2591f8b8b39bf4008d3ddb7a8b8aa8c429e34856..307deefed2c1a7b39de1eeb35821e6e1afc2c712 100755 (executable)
@@ -2,6 +2,7 @@
 
 test_description='basic commit reachability tests'
 
+TEST_PASSES_SANITIZE_LEAK=true
 . ./test-lib.sh
 
 # Construct a grid-like commit graph with points (x,y)