From bad26b37edc2dae39c663a25ba45349461c42ff7 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 31 May 2019 06:12:02 +0100 Subject: [PATCH] libpakfire: parser: Avoid passing empty parsers up from the bottom Instead we pass NULL around and only create an empty parser when we really need to. Signed-off-by: Michael Tremer --- src/libpakfire/parser/grammar.y | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/libpakfire/parser/grammar.y b/src/libpakfire/parser/grammar.y index 8121f4e39..809fb68af 100644 --- a/src/libpakfire/parser/grammar.y +++ b/src/libpakfire/parser/grammar.y @@ -207,14 +207,19 @@ block_assignments : block_assignments block_assignment { $$ = merge_parsers($1, $2); } - | block_assignment; + | block_assignment { + if ($1) + $$ = $1; + else + $$ = new_parser(parser); + }; block_assignment : assignment | block | if_stmt | empty { - $$ = new_parser(parser); + $$ = NULL; }; assignment : variable T_ASSIGN value T_EOL @@ -379,7 +384,7 @@ static PakfireParser make_if_stmt(PakfireParser parser, const enum operator op, char* v1 = pakfire_parser_expand(parser, namespace, val1); char* v2 = pakfire_parser_expand(parser, namespace, val2); - PakfireParser result; + PakfireParser result = NULL; switch (op) { case OP_EQUALS: @@ -399,8 +404,6 @@ static PakfireParser make_if_stmt(PakfireParser parser, const enum operator op, if (result) result = pakfire_parser_ref(result); - else - result = new_parser(parser); return result; } -- 2.47.2