Răsfoiți Sursa

bugfix when multiple varMap (always get latest)

Nicolas Cannasse 11 ani în urmă
părinte
comite
b9aebd1729
1 a modificat fișierele cu 7 adăugiri și 5 ștergeri
  1. 7 5
      hxsl/Eval.hx

+ 7 - 5
hxsl/Eval.hx

@@ -25,7 +25,7 @@ class Eval {
 	function mapVar( v : TVar ) {
 		var v2 = varMap.get(v);
 		if( v2 != null )
-			return v2;
+			return v == v2 ? v2 : mapVar(v2);
 		v2 = {
 			id : Tools.allocVarId(),
 			name : v.name,
@@ -152,8 +152,10 @@ class Eval {
 			var c = constants.get(v);
 			if( c != null )
 				c;
-			else
-				TVar(mapVar(v));
+			else {
+				var v2 = mapVar(v);
+				TVar(v2);
+			}
 		case TVarDecl(v, init):
 			TVarDecl(mapVar(v), init == null ? null : evalExpr(init));
 		case TArray(e1, e2):
@@ -195,8 +197,8 @@ class Eval {
 							varMap.remove(v);
 							undo.push(function() varMap.set(v, old));
 						}
-						var v = mapVar(v);
-						outExprs.push( { e : TVarDecl(v, e), t : TVoid, p : e.p } );
+						var v2 = mapVar(v);
+						outExprs.push( { e : TVarDecl(v2, e), t : TVoid, p : e.p } );
 					}
 				}
 				var e = handleReturn(evalExpr(f.expr), true);