Fix memory leak in 'Repository.create_tag'
Free the signature.
This commit is contained in:
parent
3851f725f9
commit
1eb0c6a9f0
21
pygit2.c
21
pygit2.c
@ -730,11 +730,11 @@ out:
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
Repository_create_tag(Repository *self, PyObject *args)
|
Repository_create_tag(Repository *self, PyObject *args)
|
||||||
{
|
{
|
||||||
PyObject *py_oid, *py_tagger;
|
PyObject *py_oid, *py_tagger, *py_result = NULL;
|
||||||
char *tag_name, *message;
|
char *tag_name, *message;
|
||||||
git_signature *tagger;
|
git_signature *tagger = NULL;
|
||||||
git_oid oid;
|
git_oid oid;
|
||||||
git_object *target;
|
git_object *target = NULL;
|
||||||
int err, target_type;
|
int err, target_type;
|
||||||
char hex[GIT_OID_HEXSZ + 1];
|
char hex[GIT_OID_HEXSZ + 1];
|
||||||
size_t len;
|
size_t len;
|
||||||
@ -753,23 +753,26 @@ Repository_create_tag(Repository *self, PyObject *args)
|
|||||||
|
|
||||||
len = py_str_to_git_oid(py_oid, &oid);
|
len = py_str_to_git_oid(py_oid, &oid);
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
return NULL;
|
goto out;
|
||||||
|
|
||||||
err = git_object_lookup_prefix(&target, self->repo, &oid,
|
err = git_object_lookup_prefix(&target, self->repo, &oid,
|
||||||
(unsigned int)len, target_type);
|
(unsigned int)len, target_type);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
git_oid_fmt(hex, &oid);
|
git_oid_fmt(hex, &oid);
|
||||||
hex[len] = '\0';
|
hex[len] = '\0';
|
||||||
return Error_set_str(err, hex);
|
Error_set_str(err, hex);
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = git_tag_create(&oid, self->repo, tag_name, target, tagger, message,
|
err = git_tag_create(&oid, self->repo, tag_name, target, tagger, message,
|
||||||
0);
|
0);
|
||||||
git_object_close(target);
|
if (err == 0)
|
||||||
if (err < 0)
|
py_result = git_oid_to_python(oid.id);
|
||||||
return NULL;
|
|
||||||
|
|
||||||
return git_oid_to_python(oid.id);
|
out:
|
||||||
|
git_signature_free(tagger);
|
||||||
|
git_object_close(target);
|
||||||
|
return py_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
Loading…
x
Reference in New Issue
Block a user