nitron

commit a668e022d69838e930960fba6f9d914755758b3d

Author: mesyeti <mesyeti@mesyeti.uk>

fix segfault (that did not happen in any debugger!)

 basic/source/semanticAnalysis.c | 24 ++++++++++++++----------
 basic/source/state.c | 1 +


diff --git a/basic/source/semanticAnalysis.c b/basic/source/semanticAnalysis.c
index 0503c2ea998ae49ab59f321063fd2255f928fcc5..70751771fb54da5d9762b0a2b167ee8fef1243e2 100644
--- a/basic/source/semanticAnalysis.c
+++ b/basic/source/semanticAnalysis.c
@@ -39,8 +39,9 @@ 	State_MakePrimitive("bool",  1,        PRIM_UINT);
 	State_MakePrimitive("__lit", 0,        PRIM_INT);
 
 	Type type;
-	type.name = NewString("unit");
-	type.type = TYPE_UNIT;
+	type.name    = NewString("unit");
+	type.type    = TYPE_UNIT;
+	type.private = false;
 	State_AddType(type);
 
 	State_AddVar(NEW_VAR("unit", "null",  true, true));
@@ -600,14 +601,15 @@  			type.type    = TYPE_FUNC;
  			type.name    = NULL;
  			type.size    = (size_t) -1;
  			type.func    = func;
- 			type.private = external && node->funcDef.private;
+ 			type.private = false;
 
  			size_t funcTypeIdx = State_AddType(type);
 
  			// create variable for this function
  			Var funcVar;
- 			funcVar.type = (UsedType) {0, funcTypeIdx, 0, false};
- 			funcVar.name = NewString(node->funcDef.dec.name);
+ 			funcVar.type    = (UsedType) {0, funcTypeIdx, 0, false};
+ 			funcVar.name    = NewString(node->funcDef.dec.name);
+ 			funcVar.private = external && node->funcDef.private;
 
  			State_AddVar(funcVar);
 
@@ -618,8 +620,9 @@
 			// add parameters to this scope
 			for (size_t i = 0; i < func.paramsLen; ++ i) {
 				Var var;
-				var.type = func.params[i].type;
-				var.name = NewString(func.params[i].name);
+				var.type    = func.params[i].type;
+				var.name    = NewString(func.params[i].name);
+				var.private = false;
 				State_AddVar(var);
 			}
 
@@ -664,14 +667,15 @@  			type.type    = TYPE_FUNC;
  			type.name    = NULL;
  			type.size    = (size_t) -1;
  			type.func    = func;
- 			type.private = external && node->external.private;
+ 			type.private = false;
 
  			size_t funcTypeIdx = State_AddType(type);
 
  			// create variable for this function
  			Var funcVar;
- 			funcVar.type = (UsedType) {0, funcTypeIdx, 0, false};
- 			funcVar.name = node->funcDef.dec.name;
+ 			funcVar.type    = (UsedType) {0, funcTypeIdx, 0, false};
+ 			funcVar.name    = node->funcDef.dec.name;
+ 			funcVar.private = external && node->external.private;
 
  			State_AddVar(funcVar);
 




diff --git a/basic/source/state.c b/basic/source/state.c
index fbf8a1d569ff6be04318d6976fbc0597d532f29a..55624aa6df580199d918e24fb0d8447f3707c3f2 100644
--- a/basic/source/state.c
+++ b/basic/source/state.c
@@ -109,6 +109,7 @@ 	type.type     = TYPE_PRIM;
 	type.name     = NewString(name);
 	type.size     = size;
 	type.primType = primType;
+	type.private  = false;
 	State_AddType(type);
 }