Commit 3665ba8e by Carlos Martín Nieto

refspec: add git_refspec__free, remove git_refspec_parse

The latter shouldn't be exposed and isn't used, git_refspec__parse
supersedes it.

Fix a leak in the refspec tests while we're at it.
parent 2af1c266
......@@ -20,14 +20,6 @@
GIT_BEGIN_DECL
/**
* Parse a refspec string and create a refspec object
*
* @param refspec pointer to the refspec structure to be used
* @param str the refspec as a string
*/
GIT_EXTERN(int) git_refspec_parse(git_refspec *refspec, const char *str);
/**
* Get the source specifier
*
* @param refspec the refspec
......
......@@ -125,35 +125,10 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
return -1;
}
int git_refspec_parse(git_refspec *refspec, const char *str)
void git_refspec__free(git_refspec *refspec)
{
char *delim;
memset(refspec, 0x0, sizeof(git_refspec));
if (*str == '+') {
refspec->force = 1;
str++;
}
delim = strchr(str, ':');
if (delim == NULL) {
refspec->src = git__strdup(str);
GITERR_CHECK_ALLOC(refspec->src);
return 0;
}
refspec->src = git__strndup(str, delim - str);
GITERR_CHECK_ALLOC(refspec->src);
refspec->dst = git__strdup(delim + 1);
if (refspec->dst == NULL) {
git__free(refspec->src);
refspec->src = NULL;
return -1;
}
return 0;
git__free(refspec->src);
git__free(refspec->dst);
}
const char *git_refspec_src(const git_refspec *refspec)
......
......@@ -25,6 +25,8 @@ int git_refspec__parse(
const char *str,
bool is_fetch);
void git_refspec__free(git_refspec *refspec);
/**
* Transform a reference to its target following the refspec's rules,
* and writes the results into a git_buf.
......
......@@ -536,10 +536,8 @@ void git_remote_free(git_remote *remote)
git_vector_free(&remote->refs);
git__free(remote->fetch.src);
git__free(remote->fetch.dst);
git__free(remote->push.src);
git__free(remote->push.dst);
git_refspec__free(&remote->fetch);
git_refspec__free(&remote->push);
git__free(remote->url);
git__free(remote->pushurl);
git__free(remote->name);
......
......@@ -8,6 +8,7 @@ static void assert_refspec(unsigned int direction, const char *input, bool is_ex
int error;
error = git_refspec__parse(&refspec, input, direction == GIT_DIR_FETCH);
git_refspec__free(&refspec);
if (is_expected_to_be_valid)
cl_assert_equal_i(0, error);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment