From 011414b35bdb4e7e1e819d12e9fb2f37f91b2682 Mon Sep 17 00:00:00 2001 From: A404M Date: Thu, 27 Mar 2025 02:03:23 +0330 Subject: trying to change way of variables --- src/runner/runner.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/runner') diff --git a/src/runner/runner.c b/src/runner/runner.c index 52c9673..42f5ad3 100644 --- a/src/runner/runner.c +++ b/src/runner/runner.c @@ -159,10 +159,11 @@ bool runAstTree(AstTreeRoot *root) { strncmp(variable->name_begin, MAIN_STR, MAIN_STR_SIZE) == 0 && variable_value->token == AST_TREE_TOKEN_FUNCTION) { - AstTree *main = variable_value; + AstTree *main = copyAstTree(variable_value); const bool ret = runAstTreeFunction(main, NULL, 0, &pages) == &AST_TREE_VOID_VALUE; + astTreeDelete(main); destroyRootPages(pages); return ret; } @@ -299,9 +300,11 @@ AstTree *runExpression(AstTree *expr, RunnerVariablePages *pages, AstTreeFunctionCall *metadata = expr->metadata; if (metadata->function->token == AST_TREE_TOKEN_VARIABLE) { AstTreeVariable *variable = metadata->function->metadata; - return runAstTreeFunction(runnerVariableGetValue(pages, variable), - metadata->parameters, metadata->parameters_size, - pages); + AstTree *function = copyAstTree(runnerVariableGetValue(pages, variable)); + AstTree *result = runAstTreeFunction(function, metadata->parameters, + metadata->parameters_size, pages); + astTreeDelete(function); + return result; } else { UNREACHABLE; } -- cgit v1.2.3