fix: memory issues, parser errors and get_ast_if returning always NULL

This commit is contained in:
matteo 2026-01-30 16:51:10 +01:00
parent 3fa7b97282
commit f8b91d4da3
4 changed files with 5 additions and 2 deletions

View file

@ -205,6 +205,8 @@ int exec_ast_command(struct ast_command *command, struct hash_map *vars)
int exec_ast_if(struct ast_if *if_node, struct hash_map *vars)
{
if (if_node == NULL)
return 2;
int cond = execution(if_node->condition, vars);
if (cond == 0)
return execution(if_node->then_clause, vars);

View file

@ -140,6 +140,7 @@ bool grammar_init(void)
// Element
add_first(RULE_ELEMENT, TOKEN_WORD);
add_first(RULE_ELEMENT, TOKEN_ASSIGNMENT_WORD);
add_firsts(RULE_ELEMENT, first(RULE_REDIRECTION));
// Prefix

View file

@ -281,7 +281,7 @@ struct ast *parse_simple_command(struct lexer_context *ctx)
struct ast *parse_element(struct lexer_context *ctx)
{
struct token *token = PEEK_TOKEN();
if (token->type == TOKEN_WORD)
if (token->type == TOKEN_WORD || token->type == TOKEN_ASSIGNMENT_WORD)
{
token = POP_TOKEN();
return ast_create_word(token->data);

View file

@ -19,7 +19,7 @@ struct ast *ast_create_if(struct ast *condition, struct ast *then_clause,
struct ast_if *ast_get_if(struct ast *node)
{
if (node == NULL || node->type == AST_IF)
if (node == NULL || node->type != AST_IF)
return NULL;
return node->data;
}