diff --git a/pygit2.c b/pygit2.c index 334c293..54862a3 100644 --- a/pygit2.c +++ b/pygit2.c @@ -730,11 +730,11 @@ out: static PyObject * Repository_create_tag(Repository *self, PyObject *args) { - PyObject *py_oid, *py_tagger; + PyObject *py_oid, *py_tagger, *py_result = NULL; char *tag_name, *message; - git_signature *tagger; + git_signature *tagger = NULL; git_oid oid; - git_object *target; + git_object *target = NULL; int err, target_type; char hex[GIT_OID_HEXSZ + 1]; size_t len; @@ -753,23 +753,26 @@ Repository_create_tag(Repository *self, PyObject *args) len = py_str_to_git_oid(py_oid, &oid); if (len == 0) - return NULL; + goto out; err = git_object_lookup_prefix(&target, self->repo, &oid, (unsigned int)len, target_type); if (err < 0) { git_oid_fmt(hex, &oid); 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, 0); - git_object_close(target); - if (err < 0) - return NULL; + if (err == 0) + py_result = git_oid_to_python(oid.id); - return git_oid_to_python(oid.id); +out: + git_signature_free(tagger); + git_object_close(target); + return py_result; } static PyObject *