]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Add a reference to the context
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 17 Oct 2023 16:41:25 +0000 (16:41 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 17 Oct 2023 16:41:25 +0000 (16:41 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index 00a90a961f50d545a9acc0a8b721990b0898c049..00ccb8d1ffb7875ffc6af6f50464af5c5d5361b5 100644 (file)
@@ -35,6 +35,7 @@
 
 #include <pakfire/archive.h>
 #include <pakfire/compress.h>
+#include <pakfire/ctx.h>
 #include <pakfire/dependencies.h>
 #include <pakfire/digest.h>
 #include <pakfire/file.h>
@@ -57,6 +58,7 @@
 #define MAX_FOLLOW_SYMLINKS 10
 
 struct pakfire_archive {
+       struct pakfire_ctx* ctx;
        struct pakfire* pakfire;
        int nrefs;
 
@@ -197,7 +199,10 @@ static void pakfire_archive_free(struct pakfire_archive* archive) {
                pakfire_package_unref(archive->package);
        if (archive->metadata)
                json_object_put(archive->metadata);
-       pakfire_unref(archive->pakfire);
+       if (archive->pakfire)
+               pakfire_unref(archive->pakfire);
+       if (archive->ctx)
+               pakfire_ctx_unref(archive->ctx);
        free(archive);
 }
 
@@ -206,6 +211,9 @@ static int pakfire_archive_create(struct pakfire_archive** archive, struct pakfi
        if (!a)
                return ENOMEM;
 
+       // Store a reference to the context
+       a->ctx = pakfire_ctx(pakfire);
+
        a->pakfire = pakfire_ref(pakfire);
        a->nrefs = 1;