mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-03 10:56:30 +00:00
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.
This commit is contained in:
parent
2af1c26641
commit
3665ba8eeb
@ -19,14 +19,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
|
||||
*
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user