]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cache-tree: fix strbuf growth in prime_cache_tree_rec()
authorRené Scharfe <l.s.r@web.de>
Fri, 10 Feb 2023 20:20:30 +0000 (21:20 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 10 Feb 2023 20:24:12 +0000 (12:24 -0800)
Use size_t to store the original length of the strbuf tree_len, as
that's the correct type.

Don't double the allocated size of the strbuf when adding a subdirectory
name.  And the chance of the trailing slash fitting in the slack left by
strbuf_add() is very high, so stop pre-growing the strbuf at all.

Suggested-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
cache-tree.c

index c97111cccf2eda3a53be9dfce637fa2c35464f4d..ab90cb3127bf7de0aa4d4d7a4491b0ef56ecd6a3 100644 (file)
@@ -760,7 +760,7 @@ static void prime_cache_tree_rec(struct repository *r,
        struct tree_desc desc;
        struct name_entry entry;
        int cnt;
-       int base_path_len = tree_path->len;
+       size_t base_path_len = tree_path->len;
 
        oidcpy(&it->oid, &tree->object.oid);
 
@@ -785,7 +785,6 @@ static void prime_cache_tree_rec(struct repository *r,
                         */
                        if (r->index->sparse_index) {
                                strbuf_setlen(tree_path, base_path_len);
-                               strbuf_grow(tree_path, base_path_len + entry.pathlen + 1);
                                strbuf_add(tree_path, entry.path, entry.pathlen);
                                strbuf_addch(tree_path, '/');
                        }