diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptParser.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptParser.java index 7e3256145..cd7ded474 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptParser.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptParser.java @@ -1450,10 +1450,14 @@ public class ActionScriptParser { if (!(expr instanceof AssignableAVM2Item)) { throw new ParseException("Invalid assignment", lexer.yyline()); } - ((AssignableAVM2Item) expr).setAssignedValue(assigned); + AssignableAVM2Item as = ((AssignableAVM2Item)expr).copy(); + if(as instanceof NameAVM2Item){ + variables.add((NameAVM2Item)as); + } + as.setAssignedValue(assigned); if (expr instanceof NameAVM2Item) { ((NameAVM2Item) expr).setDefinition(false); - ret = expr; + ret = as; } ret = expr; break; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AssignableAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AssignableAVM2Item.java index 7d7252350..f268ddf8d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AssignableAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AssignableAVM2Item.java @@ -49,6 +49,8 @@ public abstract class AssignableAVM2Item extends AVM2Item { this(null); } + public abstract AssignableAVM2Item copy(); + public AssignableAVM2Item(GraphTargetItem storeValue) { super(null, PRECEDENCE_PRIMARY); this.assignedValue = storeValue; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java index 5be25ebb2..b9d784895 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java @@ -65,6 +65,19 @@ public class NameAVM2Item extends AssignableAVM2Item { public GraphTargetItem redirect; + @Override + public AssignableAVM2Item copy() { + NameAVM2Item c = new NameAVM2Item(type, line, variableName, assignedValue, definition, openedNamespaces); + c.setNs(ns); + c.regNumber = regNumber; + c.unresolved = unresolved; + c.nsKind = nsKind; + c.setIndex(index); + return c; + } + + + public void setNs(GraphTargetItem ns) { this.ns = ns; } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java index eccab7ac7..4865b4f72 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java @@ -59,6 +59,14 @@ public class PropertyAVM2Item extends AssignableAVM2Item { public GraphTargetItem index; private List openedNamespaces; + @Override + public AssignableAVM2Item copy() { + PropertyAVM2Item p =new PropertyAVM2Item(object, propertyName, index, abc, otherABCs, openedNamespaces); + return p; + } + + + public PropertyAVM2Item(GraphTargetItem object, String propertyName, GraphTargetItem index, ABC abc, List otherABCs, List openedNamespaces) { this.propertyName = propertyName; this.object = object;