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 @@ ...@@ -20,14 +20,6 @@
GIT_BEGIN_DECL 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 * Get the source specifier
* *
* @param refspec the refspec * @param refspec the refspec
......
...@@ -125,35 +125,10 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch) ...@@ -125,35 +125,10 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
return -1; 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); git__free(refspec->src);
refspec->src = NULL; git__free(refspec->dst);
return -1;
}
return 0;
} }
const char *git_refspec_src(const git_refspec *refspec) const char *git_refspec_src(const git_refspec *refspec)
......
...@@ -25,6 +25,8 @@ int git_refspec__parse( ...@@ -25,6 +25,8 @@ int git_refspec__parse(
const char *str, const char *str,
bool is_fetch); bool is_fetch);
void git_refspec__free(git_refspec *refspec);
/** /**
* Transform a reference to its target following the refspec's rules, * Transform a reference to its target following the refspec's rules,
* and writes the results into a git_buf. * and writes the results into a git_buf.
......
...@@ -536,10 +536,8 @@ void git_remote_free(git_remote *remote) ...@@ -536,10 +536,8 @@ void git_remote_free(git_remote *remote)
git_vector_free(&remote->refs); git_vector_free(&remote->refs);
git__free(remote->fetch.src); git_refspec__free(&remote->fetch);
git__free(remote->fetch.dst); git_refspec__free(&remote->push);
git__free(remote->push.src);
git__free(remote->push.dst);
git__free(remote->url); git__free(remote->url);
git__free(remote->pushurl); git__free(remote->pushurl);
git__free(remote->name); git__free(remote->name);
......
...@@ -8,6 +8,7 @@ static void assert_refspec(unsigned int direction, const char *input, bool is_ex ...@@ -8,6 +8,7 @@ static void assert_refspec(unsigned int direction, const char *input, bool is_ex
int error; int error;
error = git_refspec__parse(&refspec, input, direction == GIT_DIR_FETCH); error = git_refspec__parse(&refspec, input, direction == GIT_DIR_FETCH);
git_refspec__free(&refspec);
if (is_expected_to_be_valid) if (is_expected_to_be_valid)
cl_assert_equal_i(0, error); 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