diff --git a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java index e3a446070..c88803ad3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java @@ -585,7 +585,7 @@ public class SWFInputStream extends InputStream { if (ins.isBranch() || ins.isJump()) { - if (ins instanceof ActionIf && !stack.isEmpty() && (stack.peek().isCompileTime())) { + if (ins instanceof ActionIf && !stack.isEmpty() && (stack.peek().isCompileTime()&&(!stack.peek().hasSideEffect()))) { ActionIf aif = (ActionIf) ins; if (aif.ignoreUsed && (!aif.jumpUsed)) { ins.setIgnored(true); @@ -872,7 +872,7 @@ public class SWFInputStream extends InputStream { } else if (next.equals("c")) { goaif = true; } - } else if (top.isCompileTime() && ((!top.isVariableComputed()) || (top.isVariableComputed() && enableVariables && (!notCompileTime)))) { + } else if (top.isCompileTime() && (!top.hasSideEffect()) && ((!top.isVariableComputed()) || (top.isVariableComputed() && enableVariables && (!notCompileTime)))) { //if(top.isCompileTime()) { //if(false){ if (enableVariables) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetMemberTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetMemberTreeItem.java index 0819dbcdb..8f03f0dc7 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetMemberTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetMemberTreeItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.treemodel; import com.jpexs.decompiler.flash.graph.GraphSourceItem; import com.jpexs.decompiler.flash.graph.GraphTargetItem; +import static com.jpexs.decompiler.flash.graph.GraphTargetItem.PRECEDENCE_ASSIGMENT; import java.util.List; public class SetMemberTreeItem extends TreeItem implements SetTypeTreeItem { @@ -27,7 +28,7 @@ public class SetMemberTreeItem extends TreeItem implements SetTypeTreeItem { public GraphTargetItem value; public SetMemberTreeItem(GraphSourceItem instruction, GraphTargetItem object, GraphTargetItem objectName, GraphTargetItem value) { - super(instruction, PRECEDENCE_PRIMARY); + super(instruction, PRECEDENCE_ASSIGMENT); this.object = object; this.objectName = objectName; this.value = value; @@ -55,4 +56,9 @@ public class SetMemberTreeItem extends TreeItem implements SetTypeTreeItem { ret.addAll(value.getNeededSources()); return ret; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetPropertyTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetPropertyTreeItem.java index 162c98f60..ef7e4420a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetPropertyTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetPropertyTreeItem.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.action.treemodel; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.graph.GraphSourceItem; import com.jpexs.decompiler.flash.graph.GraphTargetItem; +import static com.jpexs.decompiler.flash.graph.GraphTargetItem.PRECEDENCE_ASSIGMENT; import java.util.List; public class SetPropertyTreeItem extends TreeItem implements SetTypeTreeItem { @@ -28,7 +29,7 @@ public class SetPropertyTreeItem extends TreeItem implements SetTypeTreeItem { public GraphTargetItem value; public SetPropertyTreeItem(GraphSourceItem instruction, GraphTargetItem target, int propertyIndex, GraphTargetItem value) { - super(instruction, PRECEDENCE_PRIMARY); + super(instruction, PRECEDENCE_ASSIGMENT); this.target = target; this.propertyIndex = propertyIndex; this.value = value; @@ -54,4 +55,9 @@ public class SetPropertyTreeItem extends TreeItem implements SetTypeTreeItem { ret.addAll(value.getNeededSources()); return ret; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetVariableTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetVariableTreeItem.java index 4918d0315..cd6327848 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetVariableTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/SetVariableTreeItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.treemodel; import com.jpexs.decompiler.flash.graph.GraphSourceItem; import com.jpexs.decompiler.flash.graph.GraphTargetItem; +import static com.jpexs.decompiler.flash.graph.GraphTargetItem.PRECEDENCE_ASSIGMENT; import java.util.List; public class SetVariableTreeItem extends TreeItem implements SetTypeTreeItem { @@ -26,7 +27,7 @@ public class SetVariableTreeItem extends TreeItem implements SetTypeTreeItem { public GraphTargetItem value; public SetVariableTreeItem(GraphSourceItem instruction, GraphTargetItem name, GraphTargetItem value) { - super(instruction, PRECEDENCE_PRIMARY); + super(instruction, PRECEDENCE_ASSIGMENT); this.name = name; this.value = value; } @@ -53,4 +54,11 @@ public class SetVariableTreeItem extends TreeItem implements SetTypeTreeItem { public boolean isCompileTime() { return value.isCompileTime(); } + + @Override + public boolean hasSideEffect() { + return true; + } + + }