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
}