From: Michael Tremer Date: Sat, 20 Jan 2018 14:14:45 +0000 (+0100) Subject: python: Drop Pakfire reference from Key X-Git-Tag: 0.9.28~1285^2~1142 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e511c41d23cca635ba8a46c46cd5731510e2e3be;p=pakfire.git python: Drop Pakfire reference from Key Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/key.c b/src/_pakfire/key.c index 6e2c1ddb1..36f81719f 100644 --- a/src/_pakfire/key.c +++ b/src/_pakfire/key.c @@ -26,45 +26,38 @@ #include "key.h" #include "pakfire.h" -static PyObject* Key_new_core(PyTypeObject* type, PakfireObject* pakfire, PakfireKey key) { +PyObject* new_key(PyTypeObject* type, PakfireKey key) { KeyObject* self = (KeyObject *)type->tp_alloc(type, 0); if (self) { - self->pakfire = pakfire; - self->key = key; + self->key = pakfire_key_ref(key); } return (PyObject *)self; } -PyObject* new_key(PakfireObject* pakfire, PakfireKey key) { - return Key_new_core(&KeyType, pakfire, pakfire_key_ref(key)); -} - static PyObject* Key_new(PyTypeObject* type, PyObject* args, PyObject* kwds) { - return Key_new_core(type, NULL, NULL); + KeyObject* self = (KeyObject *)type->tp_alloc(type, 0); + if (self) { + self->key = NULL; + } + + return (PyObject *)self; } static void Key_dealloc(KeyObject* self) { - if (self->key) - pakfire_key_unref(self->key); - - if (self->pakfire) - Py_DECREF(self->pakfire); + pakfire_key_unref(self->key); Py_TYPE(self)->tp_free((PyObject *)self); } static int Key_init(KeyObject* self, PyObject* args, PyObject* kwds) { - PyObject* pakfire; + PakfireObject* pakfire; const char* fingerprint = NULL; if (!PyArg_ParseTuple(args, "O!s", &PakfireType, &pakfire, &fingerprint)) return -1; - self->pakfire = (PakfireObject *)pakfire; - Py_INCREF(self->pakfire); - - self->key = pakfire_key_get(self->pakfire->pakfire, fingerprint); + self->key = pakfire_key_get(pakfire->pakfire, fingerprint); if (!self->key) return -1; diff --git a/src/_pakfire/key.h b/src/_pakfire/key.h index 2485159da..fa6875acc 100644 --- a/src/_pakfire/key.h +++ b/src/_pakfire/key.h @@ -25,16 +25,13 @@ #include -#include "pakfire.h" - typedef struct { PyObject_HEAD - PakfireObject* pakfire; PakfireKey key; } KeyObject; extern PyTypeObject KeyType; -PyObject* new_key(PakfireObject* pakfire, PakfireKey key); +PyObject* new_key(PyTypeObject* type, PakfireKey key); #endif /* PYTHON_PAKFIRE_KEY_H */ diff --git a/src/_pakfire/pakfire.c b/src/_pakfire/pakfire.c index f4bdc2876..34121ea1f 100644 --- a/src/_pakfire/pakfire.c +++ b/src/_pakfire/pakfire.c @@ -152,7 +152,7 @@ static PyObject* _import_keylist(PakfireObject* pakfire, PakfireKey* keys) { while (keys && *keys) { PakfireKey key = *keys++; - PyObject* object = new_key(pakfire, key); + PyObject* object = new_key(&KeyType, key); PyList_Append(list, object); // Drop reference to the Python object