diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-03-27 02:03:23 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-03-27 02:03:23 +0330 |
commit | 011414b35bdb4e7e1e819d12e9fb2f37f91b2682 (patch) | |
tree | 209f89bf0ceb2126e941450d600d0d03b2924ae5 /src/runner | |
parent | 3950c23e40207cd8a374fcd4aa5739c0a63115f5 (diff) |
trying to change way of variables
Diffstat (limited to 'src/runner')
-rw-r--r-- | src/runner/runner.c | 11 |
1 files changed, 7 insertions, 4 deletions
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; } |