]> git.ipfire.org Git - thirdparty/git.git/commitdiff
commit-graph: stop fill_oids_from_packs() progress on error and free()
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Fri, 4 Mar 2022 18:32:13 +0000 (19:32 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 4 Mar 2022 21:24:19 +0000 (13:24 -0800)
Fix a bug in fill_oids_from_packs(), we should always stop_progress(),
but did not do so if we returned an error here. This also plugs a
memory leak in those cases by releasing the two "struct strbuf"
variables the function uses.

While I'm at it stop hardcoding "-1" here and just use the return
value of error() instead, which happens to be "-1".

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-graph.c

index d0c94600bab8eaaeaec273da9276f0a4743c6ee7..aab0b292774cabb49ba967207012b0898ba85b48 100644 (file)
@@ -1685,6 +1685,7 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx,
        struct strbuf progress_title = STRBUF_INIT;
        struct strbuf packname = STRBUF_INIT;
        int dirlen;
+       int ret = 0;
 
        strbuf_addf(&packname, "%s/pack/", ctx->odb->path);
        dirlen = packname.len;
@@ -1703,12 +1704,12 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx,
                strbuf_addstr(&packname, pack_indexes->items[i].string);
                p = add_packed_git(packname.buf, packname.len, 1);
                if (!p) {
-                       error(_("error adding pack %s"), packname.buf);
-                       return -1;
+                       ret = error(_("error adding pack %s"), packname.buf);
+                       goto cleanup;
                }
                if (open_pack_index(p)) {
-                       error(_("error opening index for %s"), packname.buf);
-                       return -1;
+                       ret = error(_("error opening index for %s"), packname.buf);
+                       goto cleanup;
                }
                for_each_object_in_pack(p, add_packed_commits, ctx,
                                        FOR_EACH_OBJECT_PACK_ORDER);
@@ -1716,11 +1717,12 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx,
                free(p);
        }
 
+cleanup:
        stop_progress(&ctx->progress);
        strbuf_release(&progress_title);
        strbuf_release(&packname);
 
-       return 0;
+       return ret;
 }
 
 static int fill_oids_from_commits(struct write_commit_graph_context *ctx,