compiler/libec/pass2: Fixed crash on missing member of member expression
authorJerome St-Louis <jerome@ecere.com>
Sat, 31 May 2014 19:04:40 +0000 (15:04 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sat, 31 May 2014 19:09:43 +0000 (15:09 -0400)
- e.g. exp. = 0

compiler/bootstrap/libec/bootstrap/pass2.c
compiler/libec/src/pass2.ec

index 4e08e0b..3ffdeae 100644 (file)
@@ -1870,7 +1870,7 @@ memberExp = (*memberExp->list).last;
 }
 if(memberExp && memberExp->type != 8)
 memberExp = (((void *)0));
-if(memberExp && memberExp->type == 8)
+if(memberExp && memberExp->type == 8 && memberExp->member.member)
 {
 struct Type * type = memberExp->member.exp->expType;
 
index 37bbe83..58c55d0 100644 (file)
@@ -603,7 +603,7 @@ static void ProcessExpression(Expression exp)
 
             if(memberExp && memberExp.type != ExpressionType::memberExp) memberExp = null;
 
-            if(memberExp && memberExp.type == ExpressionType::memberExp)
+            if(memberExp && memberExp.type == ExpressionType::memberExp && memberExp.member.member)
             {
                Type type = memberExp.member.exp.expType;
                if(type)