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>
This commit is contained in:
Nguyễn Thái Ngọc Duy
2017-08-23 19:36:53 +07:00
committed by Junio C Hamano
parent be489d02d2
commit 2c616c172d

17
refs.c
View File

@ -1636,7 +1636,6 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
{ {
struct strbuf submodule_sb = STRBUF_INIT; struct strbuf submodule_sb = STRBUF_INIT;
struct ref_store *refs; struct ref_store *refs;
int ret;
if (!submodule || !*submodule) { if (!submodule || !*submodule) {
/* /*
@ -1648,19 +1647,14 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
refs = lookup_ref_store_map(&submodule_ref_stores, submodule); refs = lookup_ref_store_map(&submodule_ref_stores, submodule);
if (refs) if (refs)
return refs; goto done;
strbuf_addstr(&submodule_sb, submodule); strbuf_addstr(&submodule_sb, submodule);
ret = is_nonbare_repository_dir(&submodule_sb); if (!is_nonbare_repository_dir(&submodule_sb))
strbuf_release(&submodule_sb); goto done;
if (!ret)
return NULL;
ret = submodule_to_gitdir(&submodule_sb, submodule); if (submodule_to_gitdir(&submodule_sb, submodule))
if (ret) { goto done;
strbuf_release(&submodule_sb);
return NULL;
}
/* assume that add_submodule_odb() has been called */ /* assume that add_submodule_odb() has been called */
refs = ref_store_init(submodule_sb.buf, refs = ref_store_init(submodule_sb.buf,
@ -1668,6 +1662,7 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
register_ref_store_map(&submodule_ref_stores, "submodule", register_ref_store_map(&submodule_ref_stores, "submodule",
refs, submodule); refs, submodule);
done:
strbuf_release(&submodule_sb); strbuf_release(&submodule_sb);
return refs; return refs;
} }