]> git.ipfire.org Git - pakfire.git/commitdiff
transaction: Tidy up cleanup code
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 18 Mar 2025 16:37:17 +0000 (16:37 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 18 Mar 2025 16:37:17 +0000 (16:37 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/transaction.c

index ad0a829139fddca7d3a7f06ca1a32adf87acd912..8bfb865e45b42e3decc6d44116b91148dfa77926 100644 (file)
@@ -343,6 +343,29 @@ static int pakfire_transaction_setup_solver(struct pakfire_transaction* transact
        return 0;
 }
 
+static void pakfire_transaction_free(struct pakfire_transaction* transaction) {
+       pakfire_transaction_free_archives_and_packages(transaction);
+
+       if (transaction->installed_packages)
+               pakfire_packagelist_unref(transaction->installed_packages);
+       if (transaction->new_packages)
+               pakfire_packagelist_unref(transaction->new_packages);
+       if (transaction->userinstalled)
+               pakfire_strings_free(transaction->userinstalled);
+       if (transaction->progress)
+               pakfire_progress_unref(transaction->progress);
+       if (transaction->transaction)
+               transaction_free(transaction->transaction);
+       if (transaction->solver)
+               solver_free(transaction->solver);
+       if (transaction->pakfire)
+               pakfire_unref(transaction->pakfire);
+       if (transaction->ctx)
+               pakfire_ctx_unref(transaction->ctx);
+       queue_free(&transaction->jobs);
+       free(transaction);
+}
+
 int pakfire_transaction_create(struct pakfire_transaction** transaction,
                struct pakfire* pakfire, int flags) {
        int r;
@@ -387,38 +410,15 @@ int pakfire_transaction_create(struct pakfire_transaction** transaction,
                goto ERROR;
 
        // Return the transaction
-       *transaction = pakfire_transaction_ref(t);
+       *transaction = t;
+       return 0;
 
 ERROR:
-       if (t)
-               pakfire_transaction_unref(t);
+       pakfire_transaction_free(t);
 
        return r;
 }
 
-static void pakfire_transaction_free(struct pakfire_transaction* transaction) {
-       pakfire_transaction_free_archives_and_packages(transaction);
-
-       if (transaction->installed_packages)
-               pakfire_packagelist_unref(transaction->installed_packages);
-       if (transaction->new_packages)
-               pakfire_packagelist_unref(transaction->new_packages);
-       if (transaction->userinstalled)
-               pakfire_strings_free(transaction->userinstalled);
-       if (transaction->progress)
-               pakfire_progress_unref(transaction->progress);
-       if (transaction->transaction)
-               transaction_free(transaction->transaction);
-       if (transaction->solver)
-               solver_free(transaction->solver);
-       if (transaction->pakfire)
-               pakfire_unref(transaction->pakfire);
-       if (transaction->ctx)
-               pakfire_ctx_unref(transaction->ctx);
-       queue_free(&transaction->jobs);
-       free(transaction);
-}
-
 struct pakfire_transaction* pakfire_transaction_ref(
                struct pakfire_transaction* transaction) {
        transaction->nrefs++;