compiler/libec: Fixed crash with define and anonymous instantiation
authorJerome St-Louis <jerome@ecere.com>
Sat, 23 Apr 2016 01:16:24 +0000 (21:16 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sat, 2 Jul 2016 20:41:03 +0000 (16:41 -0400)
compiler/bootstrap/libec/bootstrap/pass0.c
compiler/libec/src/pass0.ec

index 18c3ee0..cc264bf 100644 (file)
@@ -1359,6 +1359,7 @@ case 1:
 {
 struct MembersInit * members;
 
+if(exp->__anon1.instance->_class)
 CheckPublicClass(exp->__anon1.instance->_class->__anon1.__anon1.symbol, access, "define");
 for(members = (*exp->__anon1.instance->members).first; members; members = members->next)
 {
index 1496fe8..adcf9df 100644 (file)
@@ -238,7 +238,8 @@ static void CheckPublicExpression(Expression exp, AccessMode access)
          case instanceExp:
          {
             MembersInit members;
-            CheckPublicClass(exp.instance._class.symbol /*FindClass(exp.instance._class.name)*/, access, "define");
+            if(exp.instance._class)
+               CheckPublicClass(exp.instance._class.symbol/*FindClass(exp.instance._class.name)*/, access, "define");
             for(members = exp.instance.members->first; members; members = members.next)
             {
                if(members.type == dataMembersInit)