From aa042cfc6fd3191eb5586527deb8a7b9a2d258a5 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 15 Jan 2018 21:04:32 +0100 Subject: [PATCH] libpakfire: Make Pakfire parent object of Transaction Signed-off-by: Michael Tremer --- src/_pakfire/transaction.c | 10 +++------- src/libpakfire/include/pakfire/transaction.h | 2 +- src/libpakfire/request.c | 6 +----- src/libpakfire/transaction.c | 11 ++++++----- 4 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/_pakfire/transaction.c b/src/_pakfire/transaction.c index 30effc904..8c325feac 100644 --- a/src/_pakfire/transaction.c +++ b/src/_pakfire/transaction.c @@ -78,13 +78,9 @@ static int Transaction_init(TransactionObject* self, PyObject* args, PyObject* k PakfireRequest req = request->request; self->transaction = pakfire_request_get_transaction(req); - // If request has got no transaction, we will create an (empty) new one. - if (!self->transaction) { - PakfirePool pool = pakfire_request_get_pool(req); - - self->transaction = pakfire_transaction_create(pool, NULL); - pakfire_pool_unref(pool); - } + // Fail on empty transaction + if (!self->transaction) + return -1; return 0; } diff --git a/src/libpakfire/include/pakfire/transaction.h b/src/libpakfire/include/pakfire/transaction.h index 648564dcb..9fcb3f461 100644 --- a/src/libpakfire/include/pakfire/transaction.h +++ b/src/libpakfire/include/pakfire/transaction.h @@ -25,7 +25,7 @@ #include -PakfireTransaction pakfire_transaction_create(PakfirePool pool, Transaction* trans); +PakfireTransaction pakfire_transaction_create(Pakfire pakfire, Transaction* trans); PakfireTransaction pakfire_transaction_ref(PakfireTransaction transaction); PakfireTransaction pakfire_transaction_unref(PakfireTransaction transaction); diff --git a/src/libpakfire/request.c b/src/libpakfire/request.c index c6c3788a2..f9dc0313d 100644 --- a/src/libpakfire/request.c +++ b/src/libpakfire/request.c @@ -217,11 +217,7 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_request_get_transaction(PakfireRequest if (!request->transaction) return NULL; - PakfirePool pool = pakfire_get_pool(request->pakfire); - PakfireTransaction transaction = pakfire_transaction_create(pool, request->transaction); - pakfire_pool_unref(pool); - - return transaction; + return pakfire_transaction_create(request->pakfire, request->transaction); } PAKFIRE_EXPORT int pakfire_request_install(PakfireRequest request, PakfirePackage package) { diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index 406e1f700..d5de4ee09 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -34,20 +35,20 @@ #include struct _PakfireTransaction { - PakfirePool pool; + Pakfire pakfire; Transaction* transaction; PakfireStep* steps; size_t num_steps; int nrefs; }; -PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_create(PakfirePool pool, Transaction* trans) { +PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_create(Pakfire pakfire, Transaction* trans) { PakfireTransaction transaction = pakfire_calloc(1, sizeof(*transaction)); if (transaction) { DEBUG("Allocated Transaction at %p\n", transaction); transaction->nrefs = 1; - transaction->pool = pakfire_pool_ref(pool); + transaction->pakfire = pakfire_ref(pakfire); // Clone the transaction, so we get independent from what ever called this. if (trans) { @@ -78,7 +79,7 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_ref(PakfireTransaction tra } void pakfire_transaction_free(PakfireTransaction transaction) { - pakfire_pool_unref(transaction->pool); + pakfire_unref(transaction->pakfire); // Release all steps while (*transaction->steps) @@ -102,7 +103,7 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_unref(PakfireTransaction t } PAKFIRE_EXPORT PakfirePool pakfire_transaction_get_pool(PakfireTransaction transaction) { - return pakfire_pool_ref(transaction->pool); + return pakfire_get_pool(transaction->pakfire); } Transaction* pakfire_transaction_get_transaction(PakfireTransaction transaction) { -- 2.39.5