From ba13868eb39121aa661dc692b5015b9909592681 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 31 Oct 2022 17:59:56 +0000 Subject: [PATCH] request: Allow to solve a request without returning a transaction & problems Signed-off-by: Michael Tremer --- src/libpakfire/request.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/libpakfire/request.c b/src/libpakfire/request.c index 8607d9320..85855851d 100644 --- a/src/libpakfire/request.c +++ b/src/libpakfire/request.c @@ -240,7 +240,7 @@ static int pakfire_request_get_problems(struct pakfire_request* request, ERROR: if (*problems) { for (struct pakfire_problem** _problem = *problems; *_problem; _problem++) - free(*_problem); + pakfire_problem_unref(*_problem); free(*problems); // Reset pointer @@ -258,8 +258,10 @@ PAKFIRE_EXPORT int pakfire_request_solve(struct pakfire_request* request, pakfire_pool_internalize(request->pakfire); // Reset pointers - *transaction = NULL; - *problems = NULL; + if (transaction) + *transaction = NULL; + if (problems) + *problems = NULL; #ifdef ENABLE_DEBUG Pool* pool = pakfire_get_solv_pool(request->pakfire); @@ -279,9 +281,11 @@ PAKFIRE_EXPORT int pakfire_request_solve(struct pakfire_request* request, #endif // Fetch problems - r = pakfire_request_get_problems(request, problems); - if (r) - return r; + if (problems) { + r = pakfire_request_get_problems(request, problems); + if (r) + return r; + } return 2; } @@ -297,15 +301,17 @@ PAKFIRE_EXPORT int pakfire_request_solve(struct pakfire_request* request, #endif // If the solving process was successful, we create the transaction - r = pakfire_transaction_create(transaction, request->pakfire, request->solver); - if (r) - goto ERROR; + if (transaction) { + r = pakfire_transaction_create(transaction, request->pakfire, request->solver); + if (r) + goto ERROR; + } // All okay return 0; ERROR: - if (*transaction) + if (transaction && *transaction) pakfire_transaction_unref(*transaction); return r; -- 2.39.5