]> git.ipfire.org Git - pakfire.git/commitdiff
python: Drop Pakfire reference from Key
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 20 Jan 2018 14:14:45 +0000 (15:14 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 20 Jan 2018 14:14:45 +0000 (15:14 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/key.c
src/_pakfire/key.h
src/_pakfire/pakfire.c

index 6e2c1ddb162299032dd8a27f2a39789fdd1ed4a1..36f81719f125afeb7501dae8e067e3d3e316282e 100644 (file)
 #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;
 
index 2485159da0f4a6f32136bde2155fbe75af81e99a..fa6875acc6d77f3fc650a1f46070738ba93a99d6 100644 (file)
 
 #include <pakfire/key.h>
 
-#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 */
index f4bdc2876539d6881a093becc4ae5dba9bdddb6b..34121ea1f9ea648705810fac7bdd930976c97897 100644 (file)
@@ -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