diff --git a/src/compiler/fzl_parser.c b/src/compiler/fzl_parser.c index 5203385..9b3a2e8 100644 --- a/src/compiler/fzl_parser.c +++ b/src/compiler/fzl_parser.c @@ -232,7 +232,10 @@ fzl_node_t *parse_postfix(fzl_parser_t *parser) fzl_node_t *arg = parse_expression(parser); if (!arg) { + for (size_t i = 0; i < args_count; i++) + fzl_freeast(args[i]); free(args); + fzl_freeast(left); return NULL; } @@ -252,6 +255,8 @@ fzl_node_t *parse_postfix(fzl_parser_t *parser) fzl_token_t *rparen = consume(parser); if (!rparen || rparen->type != FZL_TOKTYPE_RPAREN) { + for (size_t i = 0; i < args_count; i++) + fzl_freeast(args[i]); free(args); fzl_freeast(left); snprintf(plast_err, sizeof(plast_err),