]> git.ipfire.org Git - thirdparty/git.git/commitdiff
submodule--helper: move "sb" in clone_submodule() to its own scope
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 31 Aug 2022 23:17:55 +0000 (01:17 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 2 Sep 2022 16:16:23 +0000 (09:16 -0700)
Refactor the only remaining use of a "struct strbuf sb" in
clone_submodule() to live in its own scope. This makes the code
clearer by limiting its lifetime.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Reviewed-by: Glen Choo <chooglen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/submodule--helper.c

index 63008970f1c56b679f0f68c855d6718914a6c939..fe32abd45e67e9cb0c63196b4bbac9e38197daf4 100644 (file)
@@ -1557,16 +1557,24 @@ static void prepare_possible_alternates(const char *sm_name,
        free(error_strategy);
 }
 
-static int clone_submodule(struct module_clone_data *clone_data)
+static char *clone_submodule_sm_gitdir(const char *name)
 {
-       char *p, *sm_gitdir;
-       char *sm_alternate = NULL, *error_strategy = NULL;
        struct strbuf sb = STRBUF_INIT;
-       struct child_process cp = CHILD_PROCESS_INIT;
+       char *sm_gitdir;
 
-       submodule_name_to_gitdir(&sb, the_repository, clone_data->name);
+       submodule_name_to_gitdir(&sb, the_repository, name);
        sm_gitdir = absolute_pathdup(sb.buf);
-       strbuf_reset(&sb);
+       strbuf_release(&sb);
+
+       return sm_gitdir;
+}
+
+static int clone_submodule(struct module_clone_data *clone_data)
+{
+       char *p;
+       char *sm_gitdir = clone_submodule_sm_gitdir(clone_data->name);
+       char *sm_alternate = NULL, *error_strategy = NULL;
+       struct child_process cp = CHILD_PROCESS_INIT;
 
        if (!is_absolute_path(clone_data->path))
                clone_data->path = xstrfmt("%s/%s", get_git_work_tree(),
@@ -1655,7 +1663,6 @@ static int clone_submodule(struct module_clone_data *clone_data)
        free(sm_alternate);
        free(error_strategy);
 
-       strbuf_release(&sb);
        free(sm_gitdir);
        free(p);
        return 0;