Fix issues with submodules regarding refcounting.

This commit is contained in:
Patrick Steinhardt 2015-03-06 17:47:08 +01:00
parent 404645042b
commit 86c51eadbf
2 changed files with 7 additions and 4 deletions

@ -80,6 +80,7 @@ wrap_repository(git_repository *c_repo)
py_repo->repo = c_repo;
py_repo->config = NULL;
py_repo->index = NULL;
py_repo->owned = 1;
}
return (PyObject *)py_repo;

@ -69,7 +69,9 @@ PyDoc_STRVAR(Submodule_path__doc__,
PyObject *
Submodule_path__get__(Submodule *self)
{
return to_unicode(git_submodule_path(self->submodule), NULL, NULL);
const char *path = git_submodule_path(self->submodule);
assert(path);
return to_unicode(path, NULL, NULL);
}
PyDoc_STRVAR(Submodule_url__doc__,
@ -80,7 +82,7 @@ Submodule_url__get__(Submodule *self)
{
const char *url = git_submodule_url(self->submodule);
if (url == NULL)
return Py_None;
Py_RETURN_NONE;
return to_unicode(url, NULL, NULL);
}
@ -92,7 +94,7 @@ Submodule_branch__get__(Submodule *self)
{
const char *branch = git_submodule_branch(self->submodule);
if (branch == NULL)
return Py_None;
Py_RETURN_NONE;
return to_unicode(branch, NULL, NULL);
}
@ -168,8 +170,8 @@ wrap_submodule(Repository *repo, git_submodule *c_submodule)
py_submodule = PyObject_New(Submodule, &SubmoduleType);
if (py_submodule) {
py_submodule->submodule = c_submodule;
py_submodule->repo = repo;
if (repo) {
py_submodule->repo = repo;
Py_INCREF(repo);
}
}