compiler/libec/pass2: (#288) Fixed compiler crash on 'this'
authorJerome St-Louis <jerome@ecere.com>
Sat, 3 May 2014 07:05:19 +0000 (03:05 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sat, 3 May 2014 07:06:32 +0000 (03:06 -0400)
compiler/bootstrap/libec/bootstrap/pass2.c
compiler/libec/src/pass2.ec

index a7202e5..f8dc38c 100644 (file)
@@ -3401,7 +3401,7 @@ else if(_class->type == 3)
 }
 else
 {
-if(exp->member.exp->type == 0 && thisPtr && (!exp->member.exp->expType || !exp->member.exp->expType->typedByReference))
+if(exp->member.exp->type == 0 && thisPtr && type->kind == 8 && (!exp->member.exp->expType || !exp->member.exp->expType->typedByReference))
 {
 char pointerName[1024];
 
index 71b7a2c..02c2c15 100644 (file)
@@ -2682,7 +2682,7 @@ static void ProcessExpression(Expression exp)
                else
                {
                   // If it's a this pointer, replace by precomputed shortcut
-                  if(exp.member.exp.type == identifierExp && thisPtr && (!exp.member.exp.expType || !exp.member.exp.expType.typedByReference))
+                  if(exp.member.exp.type == identifierExp && thisPtr && type.kind == classType && (!exp.member.exp.expType || !exp.member.exp.expType.typedByReference))
                   {
                      char pointerName[1024];