From: Michael Tremer Date: Mon, 21 Oct 2024 18:40:55 +0000 (+0000) Subject: linter: Keep a reference to Pakfire X-Git-Tag: 0.9.30~968 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7cfad6b224c7021a0aa2b0f1877e10b07daef555;p=pakfire.git linter: Keep a reference to Pakfire Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index 004b246a6..070d8e954 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -1810,7 +1810,7 @@ PAKFIRE_EXPORT int pakfire_archive_lint(struct pakfire_archive* archive, int r; // Create a new linter - r = pakfire_linter_create(&linter, archive->ctx, archive); + r = pakfire_linter_create(&linter, archive->pakfire, archive); if (r < 0) goto ERROR; diff --git a/src/libpakfire/include/pakfire/linter.h b/src/libpakfire/include/pakfire/linter.h index acaf71887..1661a6756 100644 --- a/src/libpakfire/include/pakfire/linter.h +++ b/src/libpakfire/include/pakfire/linter.h @@ -40,7 +40,7 @@ typedef int (*pakfire_linter_result_callback)(struct pakfire_ctx* ctx, struct pakfire_linter; int pakfire_linter_create(struct pakfire_linter** linter, - struct pakfire_ctx* ctx, struct pakfire_archive* archive); + struct pakfire* pakfire, struct pakfire_archive* archive); struct pakfire_linter* pakfire_linter_ref(struct pakfire_linter* linter); struct pakfire_linter* pakfire_linter_unref(struct pakfire_linter* linter); diff --git a/src/libpakfire/linter.c b/src/libpakfire/linter.c index f4c5fe7d8..ccf2b631e 100644 --- a/src/libpakfire/linter.c +++ b/src/libpakfire/linter.c @@ -26,6 +26,7 @@ #include #include #include +#include #include struct pakfire_linter_result { @@ -42,6 +43,9 @@ struct pakfire_linter { struct pakfire_ctx* ctx; int nrefs; + // Pakfire + struct pakfire* pakfire; + // Archive struct pakfire_archive* archive; @@ -122,7 +126,7 @@ static int pakfire_linter_result( pakfire_linter_result(linter, PAKFIRE_LINTER_ERROR, format, ## __VA_ARGS__) int pakfire_linter_create(struct pakfire_linter** linter, - struct pakfire_ctx* ctx, struct pakfire_archive* archive) { + struct pakfire* pakfire, struct pakfire_archive* archive) { struct pakfire_linter* l = NULL; int r; @@ -132,7 +136,10 @@ int pakfire_linter_create(struct pakfire_linter** linter, return -errno; // Reference the context - l->ctx = pakfire_ctx_ref(ctx); + l->ctx = pakfire_ctx(pakfire); + + // Reference Pakfire + l->pakfire = pakfire_ref(pakfire); // Initialize reference counter l->nrefs = 1; @@ -178,6 +185,8 @@ static void pakfire_linter_free(struct pakfire_linter* linter) { pakfire_archive_unref(linter->archive); if (linter->pkg) pakfire_package_unref(linter->pkg); + if (linter->pakfire) + pakfire_unref(linter->pakfire); if (linter->ctx) pakfire_ctx_unref(linter->ctx); free(linter);