diff options
author | Camil Staps | 2016-09-24 14:49:20 +0200 |
---|---|---|
committer | Camil Staps | 2016-09-24 14:56:46 +0200 |
commit | e78fa8b20f219597419b33c72d72da577e8f4ec8 (patch) | |
tree | 81aff97d14f4686cccbc7d6573121372355f2723 | |
parent | Colour internal nodes gray in dot output (diff) |
Fix memory leak with code
-rw-r--r-- | interpreter/code.c | 8 |
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) { |