From a3b845a90fffeadaa8427d2d91e73e8680289c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Thu, 27 Feb 2014 22:35:27 +0100 Subject: [PATCH] Issue #306 editing AS directly - ActionStore fix (ifFrameLoaded) --- .../jpexs/decompiler/flash/action/Action.java | 10 ++++- .../flash/action/ActionListReader.java | 4 +- .../flash/action/parser/pcode/ASMParser.java | 27 ------------ .../flash/action/special/ActionStore.java | 2 +- .../flash/action/swf3/ActionWaitForFrame.java | 43 ------------------- .../action/swf4/ActionWaitForFrame2.java | 4 +- 6 files changed, 14 insertions(+), 76 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/action/Action.java b/trunk/src/com/jpexs/decompiler/flash/action/Action.java index 984efbe75..e7257269e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/Action.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/Action.java @@ -46,6 +46,7 @@ import com.jpexs.decompiler.flash.action.parser.pcode.ASMParser; import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; import com.jpexs.decompiler.flash.action.parser.script.VariableActionItem; import com.jpexs.decompiler.flash.action.special.ActionEnd; +import com.jpexs.decompiler.flash.action.special.ActionStore; import com.jpexs.decompiler.flash.action.swf4.ActionEquals; import com.jpexs.decompiler.flash.action.swf4.ActionIf; import com.jpexs.decompiler.flash.action.swf4.ActionJump; @@ -1006,7 +1007,14 @@ public class Action implements GraphSourceItem { action.translate(stack, constants, output, registerNames); } } */ else { - try { + + if(action instanceof ActionStore){ + ActionStore store=(ActionStore)action; + store.setStore(actions.subList(ip+1, ip+1+store.getStoreSize())); + ip = ip + 1 + store.getStoreSize() -1/*ip++ will be next*/; + } + + try { action.translate(localData, stack, output, staticOperation, path); } catch (EmptyStackException ese) { Logger.getLogger(Action.class.getName()).log(Level.SEVERE, "Decompilation error in: " + path, ese); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java b/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java index b3ae08e7b..093de040d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java @@ -190,7 +190,7 @@ public class ActionListReader { } updateJumps(actions, jumps, containerLastActions, endAddress, version); - updateActionStores(actions, jumps); + //updateActionStores(actions, jumps); updateContainerSizes(actions, containerLastActions); updateActionLengths(actions, version); @@ -589,7 +589,7 @@ public class ActionListReader { updateAddresses(actions, startIp, version); updateJumps(actions, jumps, containerLastActions, endAddress, version); - updateActionStores(actions, jumps); + //updateActionStores(actions, jumps); updateContainerSizes(actions, containerLastActions); updateActionLengths(actions, version); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java index 63de6b08c..f5064fe86 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java @@ -137,9 +137,6 @@ public class ASMParser { public static List parse(long containerSWFOffset, boolean ignoreNops, List