@@ -107,6 +107,7 @@ PyTypeObject RefLogIterType = {
|
||||
void
|
||||
Reference_dealloc(Reference *self)
|
||||
{
|
||||
Py_CLEAR(self->repo);
|
||||
git_reference_free(self->reference);
|
||||
PyObject_Del(self);
|
||||
}
|
||||
@@ -191,7 +192,7 @@ Reference_resolve(Reference *self, PyObject *args)
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
return wrap_reference(c_reference);
|
||||
return wrap_reference(c_reference, self->repo);
|
||||
}
|
||||
|
||||
|
||||
@@ -461,13 +462,18 @@ PyTypeObject ReferenceType = {
|
||||
|
||||
|
||||
PyObject *
|
||||
wrap_reference(git_reference * c_reference)
|
||||
wrap_reference(git_reference * c_reference, Repository *repo)
|
||||
{
|
||||
Reference *py_reference=NULL;
|
||||
|
||||
py_reference = PyObject_New(Reference, &ReferenceType);
|
||||
if (py_reference)
|
||||
if (py_reference) {
|
||||
py_reference->reference = c_reference;
|
||||
if (repo) {
|
||||
py_reference->repo = repo;
|
||||
Py_INCREF(repo);
|
||||
}
|
||||
}
|
||||
|
||||
return (PyObject *)py_reference;
|
||||
}
|
||||
|
@@ -41,6 +41,6 @@ PyObject* Reference_get_name(Reference *self);
|
||||
PyObject* Reference_get_oid(Reference *self);
|
||||
PyObject* Reference_get_hex(Reference *self);
|
||||
PyObject* Reference_get_type(Reference *self);
|
||||
PyObject* wrap_reference(git_reference * c_reference);
|
||||
PyObject* wrap_reference(git_reference *c_reference, Repository *repo);
|
||||
|
||||
#endif
|
||||
|
@@ -168,7 +168,7 @@ Repository_head__get__(Repository *self)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return wrap_reference(head);
|
||||
return wrap_reference(head, self);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -859,7 +859,7 @@ Repository_lookup_reference(Repository *self, PyObject *py_name)
|
||||
free(c_name);
|
||||
|
||||
/* 3- Make an instance of Reference and return it */
|
||||
return wrap_reference(c_reference);
|
||||
return wrap_reference(c_reference, self);
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(Repository_create_reference_direct__doc__,
|
||||
@@ -898,7 +898,7 @@ Repository_create_reference_direct(Repository *self, PyObject *args,
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
return wrap_reference(c_reference);
|
||||
return wrap_reference(c_reference, self);
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(Repository_create_reference_symbolic__doc__,
|
||||
@@ -932,7 +932,7 @@ Repository_create_reference_symbolic(Repository *self, PyObject *args,
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
return wrap_reference(c_reference);
|
||||
return wrap_reference(c_reference, self);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -159,10 +159,7 @@ typedef struct {
|
||||
/* git_reference, git_reflog */
|
||||
SIMPLE_TYPE(Walker, git_revwalk, walk)
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
git_reference *reference;
|
||||
} Reference;
|
||||
SIMPLE_TYPE(Reference, git_reference, reference)
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
Reference in New Issue
Block a user