---
 refs.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/refs.c b/refs.c
index 6695140cfe..8912798c1d 100644
--- a/refs.c
+++ b/refs.c
@@ -1571,25 +1571,23 @@ struct ref_store *get_submodule_ref_store(const char 
*submodule)
 
        refs = lookup_submodule_ref_store(submodule);
        if (refs)
-               return refs;
+               goto done;
 
        strbuf_addstr(&submodule_sb, submodule);
        ret = is_nonbare_repository_dir(&submodule_sb);
-       strbuf_release(&submodule_sb);
        if (!ret)
-               return NULL;
+               goto done;
 
        ret = submodule_to_gitdir(&submodule_sb, submodule);
-       if (ret) {
-               strbuf_release(&submodule_sb);
-               return NULL;
-       }
+       if (ret)
+               goto done;
 
        /* pretend that add_submodule_odb() has been called */
        refs = ref_store_init(submodule_sb.buf,
                              REF_STORE_READ | REF_STORE_ODB);
        register_submodule_ref_store(refs, submodule);
 
+done:
        strbuf_release(&submodule_sb);
        return refs;
 }
-- 
2.11.0.157.gd943d85

Reply via email to