refs.c: refactor get_submodule_ref_store(), share common free block

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed Aug 23, 2017 at 19:36 UTC 2c616c172d5ae052600006e942ff34136e7c534e
1 file changed +6 -11
refs.c
+6 -11
@@ -1636,7 +1636,6 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
1636 {
1637 struct strbuf submodule_sb = STRBUF_INIT;
1638 struct ref_store *refs;
1639 - int ret;
1639
1640 if (!submodule || !*submodule) {
1641 /*
@@ -1648,19 +1647,14 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
1647
1648 refs = lookup_ref_store_map(&submodule_ref_stores, submodule);
1649 if (refs)
1651 - return refs;
1650 + goto done;
1651
1652 strbuf_addstr(&submodule_sb, submodule);
1654 - ret = is_nonbare_repository_dir(&submodule_sb);
1655 - strbuf_release(&submodule_sb);
1656 - if (!ret)
1657 - return NULL;
1653 + if (!is_nonbare_repository_dir(&submodule_sb))
1654 + goto done;
1655
1659 - ret = submodule_to_gitdir(&submodule_sb, submodule);
1660 - if (ret) {
1661 - strbuf_release(&submodule_sb);
1662 - return NULL;
1663 - }
1656 + if (submodule_to_gitdir(&submodule_sb, submodule))
1657 + goto done;
1658
1659 /* assume that add_submodule_odb() has been called */
1660 refs = ref_store_init(submodule_sb.buf,
@@ -1668,6 +1662,7 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
1662 register_ref_store_map(&submodule_ref_stores, "submodule",
1663 refs, submodule);
1664
1665 +done:
1666 strbuf_release(&submodule_sb);
1667 return refs;
1668 }