From: Michael Tremer Date: Sat, 1 Jun 2019 04:41:17 +0000 (+0100) Subject: libpakfire: parser: Fix refcounting X-Git-Tag: 0.9.28~1285^2~1001 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0f1c1f263f9223533670451ef272334afb69151;p=pakfire.git libpakfire: parser: Fix refcounting Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/parser.c b/src/libpakfire/parser.c index a7c694837..58064716d 100644 --- a/src/libpakfire/parser.c +++ b/src/libpakfire/parser.c @@ -77,6 +77,7 @@ PAKFIRE_EXPORT PakfireParser pakfire_parser_create(Pakfire pakfire, PakfireParse PakfireParser parser = pakfire_calloc(1, sizeof(*parser)); if (parser) { parser->pakfire = pakfire_ref(pakfire); + parser->nrefs = 1; // Store a reference to the parent parser if we have one if (parent) diff --git a/src/libpakfire/parser/grammar.y b/src/libpakfire/parser/grammar.y index fb4df0af7..638ec5703 100644 --- a/src/libpakfire/parser/grammar.y +++ b/src/libpakfire/parser/grammar.y @@ -112,8 +112,8 @@ grammar : grammar item { $$ = merge_parsers($1, $2); - //pakfire_parser_unref($1); - //pakfire_parser_unref($2); + pakfire_parser_unref($1); + pakfire_parser_unref($2); } | item ; @@ -181,13 +181,13 @@ end : T_END T_EOL; if_stmt : if variable T_EQUALS variable T_EOL grammar else grammar end { $$ = make_if_stmt(parser, OP_EQUALS, $2, $4, $6, $8); - //pakfire_parser_unref($6); - //pakfire_parser_unref($8); + pakfire_parser_unref($6); + pakfire_parser_unref($8); } | if variable T_EQUALS variable T_EOL grammar end { $$ = make_if_stmt(parser, OP_EQUALS, $2, $4, $6, NULL); - //pakfire_parser_unref($6); + pakfire_parser_unref($6); }; block : block_opening grammar block_closing @@ -314,6 +314,9 @@ static PakfireParser merge_parsers(PakfireParser p1, PakfireParser p2) { else if (p2) p = p2; + if (p) + p = pakfire_parser_ref(p); + return p; }