]> git.ipfire.org Git - pakfire.git/commitdiff
parser: Store a reference to the context
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 29 Jan 2024 17:42:33 +0000 (17:42 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 29 Jan 2024 17:42:33 +0000 (17:42 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/parser.c

index 43fcf4442af57bc647a58da759a687d151e22b6f..263001b7d693ec0d14f97d991bc620989d5d649b 100644 (file)
@@ -33,6 +33,7 @@
 // Enable legacy logging
 #define PAKFIRE_LEGACY_LOGGING
 
+#include <pakfire/ctx.h>
 #include <pakfire/dependencies.h>
 #include <pakfire/jail.h>
 #include <pakfire/logging.h>
@@ -43,6 +44,7 @@
 #include <pakfire/util.h>
 
 struct pakfire_parser {
+       struct pakfire_ctx* ctx;
        struct pakfire* pakfire;
        int nrefs;
 
@@ -84,6 +86,7 @@ struct pakfire_parser* pakfire_parser_create(struct pakfire* pakfire,
                struct pakfire_parser* parent, const char* namespace, int flags) {
        struct pakfire_parser* parser = calloc(1, sizeof(*parser));
        if (parser) {
+               parser->ctx = pakfire_ctx(pakfire);
                parser->pakfire = pakfire_ref(pakfire);
                parser->nrefs = 1;
 
@@ -145,8 +148,10 @@ static void pakfire_parser_free(struct pakfire_parser* parser) {
 
        if (parser->parent)
                pakfire_parser_unref(parser->parent);
-
-       pakfire_unref(parser->pakfire);
+       if (parser->pakfire)
+               pakfire_unref(parser->pakfire);
+       if (parser->ctx)
+               pakfire_ctx_unref(parser->ctx);
        free(parser);
 }