aboutsummaryrefslogtreecommitdiff
path: root/interpreter/eval.c
diff options
context:
space:
mode:
authorCamil Staps2016-08-25 22:12:44 +0200
committerCamil Staps2016-08-25 22:12:44 +0200
commit14ff5785bf30474a0c53ed77c808c5ba4256cca7 (patch)
tree2fc309d2c0d6af7f5b8936386d1126bea8839666 /interpreter/eval.c
parentpedantic (diff)
Fix erroneous freeing
Diffstat (limited to 'interpreter/eval.c')
-rw-r--r--interpreter/eval.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/interpreter/eval.c b/interpreter/eval.c
index fb07e92..8e9b04f 100644
--- a/interpreter/eval.c
+++ b/interpreter/eval.c
@@ -81,8 +81,6 @@ unsigned match_expr(fuspel* rules, expression* to_match, expression* expr,
switch (to_match->kind) {
case EXPR_NAME:
*repls = push_replacement(to_match->var1, expr, *repls);
- free_expression(expr);
- my_free(expr);
return 1;
case EXPR_INT:
matches = eq_expression(to_match, expr);
@@ -205,10 +203,6 @@ expression* eval(fuspel* rules, expression* expr) {
expression* result = my_calloc(1, sizeof(expression));
replacements** repls = my_calloc(1, sizeof(replacements*));
- printf("Evaluating: ");
- print_expression(expr);
- printf("\n");
-
switch (expr->kind) {
case EXPR_INT:
cpy_expression(result, expr);
@@ -221,7 +215,7 @@ expression* eval(fuspel* rules, expression* expr) {
expression* old_result = result;
cpy_expression(result, &_rules->rule.rhs);
replace_all(*repls, result);
- result = eval(rules, old_result);
+ result = eval(rules, result);
free_expression(old_result);
my_free(old_result);
free_replacements(*repls);