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;
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++;