diff --git a/refs.c b/refs.c index e2d34b253e4c9c4efcb30e88d11ccd3ce9e14deb..842e4d89dfff8a598030e7122fa7f987023c4ddf 100644 --- a/refs.c +++ b/refs.c @@ -392,6 +392,13 @@ static char *substitute_branch_name(const char **string, int *len) int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref) { char *last_branch = substitute_branch_name(&str, &len); + int refs_found = expand_ref(str, len, sha1, ref); + free(last_branch); + return refs_found; +} + +int expand_ref(const char *str, int len, unsigned char *sha1, char **ref) +{ const char **p, *r; int refs_found = 0; @@ -417,7 +424,6 @@ int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref) warning("ignoring broken ref %s.", fullref); } } - free(last_branch); return refs_found; } diff --git a/refs.h b/refs.h index 3c3da29bf0064cd189a6b0c8dc1a7daeb953150e..31a2fa68a37306f9d707d89c7dea8a022a9a44a8 100644 --- a/refs.h +++ b/refs.h @@ -90,6 +90,7 @@ extern int resolve_gitlink_ref(const char *path, const char *refname, unsigned c */ extern int refname_match(const char *abbrev_name, const char *full_name); +extern int expand_ref(const char *str, int len, unsigned char *sha1, char **ref); extern int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref); extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);