compiler: Fix for window.anchor.left
authorJerome St-Louis <jerome@ecere.com>
Mon, 22 Apr 2013 04:07:24 +0000 (00:07 -0400)
committerJerome St-Louis <jerome@ecere.com>
Mon, 22 Apr 2013 04:08:28 +0000 (00:08 -0400)
- Fixed a bug in _FixRefExp causing deep properties to be uninitialized
- This fixed condition in DataBox::OnRedraw and potential overflow on huge IdList

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

index 7134c61..8c7194d 100644 (file)
@@ -1109,7 +1109,7 @@ bracketExp->list = (((void *)0));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*exp->list), idExp);
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*exp->list), newExp);
 FreeExpression(bracketExp);
-*expPtr = newExp;
+*expPtr = exp;
 }
 }
 else if(*expPtr && (*expPtr)->type == 4 && (*expPtr)->op.op == '&' && !(*expPtr)->op.exp1 && memberExp && (memberExp->type == 5 || memberExp->type == 34) && memberExp->list && (*memberExp->list).count > 1)
index 8b5053a..928d8a9 100644 (file)
@@ -38,7 +38,7 @@ static void _FixRefExp(Expression * expPtr, Expression * memberExpPtr)
          exp.list->Add(newExp);
          FreeExpression(bracketExp);
 
-         *expPtr = newExp; //FixRefExp(newExp);
+         *expPtr = exp; //FixRefExp(newExp);      // TESTING THIS: exp was not used!
       }
    }
    else if(*expPtr && (*expPtr).type == opExp && (*expPtr).op.op == '&' && !(*expPtr).op.exp1 &&