From d37c54d74d848435e9e28963529e6e5ae04a877d Mon Sep 17 00:00:00 2001
From: Clemens Paumgarten <clemenspaumgarten@gmail.com>
Date: Mon, 17 Jun 2019 17:04:12 +0200
Subject: [PATCH] fix symbol delete

---
 src/symbol_table.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/symbol_table.c b/src/symbol_table.c
index 32b148c..3defd3e 100644
--- a/src/symbol_table.c
+++ b/src/symbol_table.c
@@ -20,6 +20,7 @@ struct mcc_symbol *mcc_symbol_new_symbol_variable(char* variable_name, enum mcc_
     symbol -> variable_name = variable_name;
     symbol -> data_type = data_type;
     symbol -> symbol_type = MCC_SYMBOL_TYPE_VARIABLE;
+    symbol -> func_arguments = NULL;
 
     return symbol;
 }
@@ -32,6 +33,7 @@ struct mcc_symbol *mcc_symbol_new_symbol_array(char* variable_name, enum mcc_ast
     symbol -> variable_name = variable_name;
     symbol -> data_type = data_type;
     symbol -> array_size = array_size;
+    symbol -> func_arguments = NULL;
 
     return symbol;
 }
@@ -68,7 +70,7 @@ void mcc_symbol_delete_symbol(void *symbol) {
     struct mcc_symbol *s = (struct mcc_symbol *) symbol;
 
     if (s != NULL) {
-        if (s -> func_arguments) {
+        if (s -> func_arguments != NULL) {
             mcc_delete_array(s ->func_arguments, NULL);
         }
     }
@@ -81,7 +83,7 @@ struct mcc_symbol_table *mcc_symbol_table_new_table(
 
     struct mcc_symbol_table *table = malloc(sizeof(*table));
 
-    table ->inner_tables = mcc_create_dynamic_array(MCC_SYMBOL_TABLE_CHILDREN_SIZE);
+    table -> inner_tables = mcc_create_dynamic_array(MCC_SYMBOL_TABLE_CHILDREN_SIZE);
     table -> symbols = mcc_create_dynamic_array(MCC_SYMBOL_TABLE_SYMBOL_SIZE);
     table -> parent = parent;
 
@@ -89,12 +91,15 @@ struct mcc_symbol_table *mcc_symbol_table_new_table(
 }
 
 void mcc_symbol_table_delete_table(void *table) {
-    struct mcc_symbol_table *st = (struct mcc_symbol_table *) table;
     // Delete symbols
     assert(table);
 
+    struct mcc_symbol_table *st = (struct mcc_symbol_table *) table;
+
+
+
     mcc_delete_array(st -> symbols, mcc_symbol_delete_symbol);
-    mcc_delete_array(st ->inner_tables, mcc_symbol_table_delete_table);
+    mcc_delete_array(st -> inner_tables, mcc_symbol_table_delete_table);
 
     free(table);
 }
-- 
GitLab