compiler/libec: Fixed MemoryGuard issues with MinGW-w64/GCC 4.8 headers
authorJerome St-Louis <jerome@ecere.com>
Sun, 16 Mar 2014 02:11:49 +0000 (22:11 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sun, 16 Mar 2014 02:14:07 +0000 (22:14 -0400)
compiler/bootstrap/libec/bootstrap/output.c
compiler/libec/src/output.ec

index 2c7923f..a3ff8a8 100644 (file)
@@ -2337,7 +2337,7 @@ if(inCompiler && memoryGuard)
 struct Expression * exp = stmt->expressions ? (*stmt->expressions).last : (((void *)0));
 
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "{ ");
-if(exp && exp->expType)
+if(exp && exp->expType && exp->expType->kind != 0)
 {
 char string[1024] = "";
 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
@@ -2382,7 +2382,7 @@ else
 {
 struct Expression * exp = stmt->expressions ? (*stmt->expressions).last : (((void *)0));
 
-if(exp && exp->expType)
+if(exp && exp->expType && exp->expType->kind != 0)
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "__ecereReturnVal = ");
 }
 if(stmt->expressions)
@@ -2408,7 +2408,7 @@ if(inCompiler && memoryGuard)
 struct Expression * exp = stmt->expressions ? (struct Expression *)(*stmt->expressions).last : (((void *)0));
 
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __ecereNameSpace__ecere__com__MemoryGuard_PopLoc();");
-if(exp && exp->expType)
+if(exp && exp->expType && exp->expType->kind != 0)
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "return __ecereReturnVal;");
 else
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "return;");
index 33cfc72..e393397 100644 (file)
@@ -591,9 +591,8 @@ static void OutputStatement(Statement stmt, File f)
          {
             Expression exp = stmt.expressions ? stmt.expressions->last : null;
             f.Printf("{ ");
-            if(exp && exp.expType)
+            if(exp && exp.expType && exp.expType.kind != voidType)
             {
-
                char string[1024] = "";
                OldList * specs = MkList();
                Declarator decl;
@@ -635,7 +634,7 @@ static void OutputStatement(Statement stmt, File f)
          else
          {
             Expression exp = stmt.expressions ? stmt.expressions->last : null;
-            if(exp && exp.expType)
+            if(exp && exp.expType && exp.expType.kind != voidType)
                f.Printf("__ecereReturnVal = ");
          }
 
@@ -653,7 +652,7 @@ static void OutputStatement(Statement stmt, File f)
          {
             Expression exp = stmt.expressions ? (Expression)stmt.expressions->last : null;
             f.Printf(" __ecereNameSpace__ecere__com__MemoryGuard_PopLoc();");
-            if(exp && exp.expType)
+            if(exp && exp.expType && exp.expType.kind != voidType)
                f.Printf("return __ecereReturnVal;");
             else
                f.Printf("return;");