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>
maint
Nguyễn Thái Ngọc Duy 2017-08-23 19:36:53 +07:00 committed by Junio C Hamano
parent be489d02d2
commit 2c616c172d
1 changed files with 6 additions and 11 deletions

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;
} }