ERROR:
if (*problems) {
for (struct pakfire_problem** _problem = *problems; *_problem; _problem++)
- free(*_problem);
+ pakfire_problem_unref(*_problem);
free(*problems);
// Reset pointer
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);
#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;
}
#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;