aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-09-24 14:49:20 +0200
committerCamil Staps2016-09-24 14:56:46 +0200
commite78fa8b20f219597419b33c72d72da577e8f4ec8 (patch)
tree81aff97d14f4686cccbc7d6573121372355f2723
parentColour internal nodes gray in dot output (diff)
Fix memory leak with code
-rw-r--r--interpreter/code.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/interpreter/code.c b/interpreter/code.c
index e3cafa7..595aac3 100644
--- a/interpreter/code.c
+++ b/interpreter/code.c
@@ -6,17 +6,21 @@
#include "mem.h"
void fill_node_int(struct node** node, int i) {
- free_node(*node, 1, 0);
+ unsigned int used_count = (*node)->used_count;
+ free_node(*node, used_count, 0);
(*node)->kind = NODE_INT;
(*node)->var1 = my_calloc(1, sizeof(int));
*((int*) (*node)->var1) = i;
+ use_node(*node, used_count - 1);
}
void fill_node_name(struct node** node, char* s) {
- free_node(*node, 1, 0);
+ unsigned int used_count = (*node)->used_count;
+ free_node(*node, used_count, 0);
(*node)->kind = NODE_NAME;
(*node)->var1 = my_calloc(1, strlen(s) + 1);
strcpy((*node)->var1, s);
+ use_node(*node, used_count - 1);
}
void code_time(struct node** result) {