]> git.ipfire.org Git - pakfire.git/commitdiff
linter: Keep a reference to Pakfire
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Oct 2024 18:40:55 +0000 (18:40 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Oct 2024 18:40:55 +0000 (18:40 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c
src/libpakfire/include/pakfire/linter.h
src/libpakfire/linter.c

index 004b246a6cfa23f1c18e980f4505a07646865ff6..070d8e954527613ea1f65aab5bfaf517b5d49d2f 100644 (file)
@@ -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;
 
index acaf7188776399a31655e9dcb6b361a01776aaa7..1661a6756e9c00c8d63e0d69901cece9879871ed 100644 (file)
@@ -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);
index f4c5fe7d8a2c5b97f4e7ed36b012556f7bbd135c..ccf2b631e38e119968aab06526d0e8aa9cfb265e 100644 (file)
@@ -26,6 +26,7 @@
 #include <pakfire/linter.h>
 #include <pakfire/logging.h>
 #include <pakfire/package.h>
+#include <pakfire/pakfire.h>
 #include <pakfire/string.h>
 
 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);