diff --git a/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java b/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java index 9d73e35d2..e9f0c733b 100644 --- a/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java +++ b/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java @@ -87,7 +87,7 @@ public class ActionIf extends Action { @Override public String toString() { - return "ActionIf"; + return "ActionIf " + offset; } @Override diff --git a/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java b/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java index cdb6d8683..4b9072779 100644 --- a/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java +++ b/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java @@ -26,6 +26,7 @@ import com.jpexs.decompiler.flash.action.parser.ParseException; import com.jpexs.decompiler.flash.action.parser.pcode.ASMParsedSymbol; import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; import com.jpexs.decompiler.flash.configuration.Configuration; +import com.jpexs.decompiler.flash.dumpview.DumpInfo; import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode; @@ -77,7 +78,9 @@ public class ActionPush extends Action { super(0x96, actionLength); int type; values = new ArrayList<>(); - sis = new SWFInputStream(sis.getSwf(), sis.readBytesEx(actionLength, "actionPush")); + DumpInfo di = sis.dumpInfo; + sis = sis.getLimitedStream(actionLength); + sis.dumpInfo = di; try { while (sis.available() > 0) { type = sis.readUI8("type"); diff --git a/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTree.java b/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTree.java index d45d3eeb4..ed0daaaf6 100644 --- a/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTree.java +++ b/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTree.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.SWFInputStream; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.ActionListReader; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.dumpview.DumpInfo; import com.jpexs.decompiler.flash.dumpview.DumpInfoSwfNode; @@ -223,6 +224,9 @@ public class DumpTree extends JTree implements ActionListener { for (Action action : actions) { DumpInfo di = new DumpInfo(action.toString(), "Action", null, action.getAddress(), action.getTotalActionLength()); di.parent = dumpInfo; + rri.dumpInfo = di; + rri.seek(action.getAddress()); + rri.readAction(new ConstantPool()); dumpInfo.getChildInfos().add(di); } } catch (IOException | InterruptedException ex) { diff --git a/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTreeModel.java b/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTreeModel.java index ece7e4f7f..a50322e2f 100644 --- a/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/dumpview/DumpTreeModel.java @@ -93,7 +93,7 @@ public class DumpTreeModel implements TreeModel { @Override public int getChildCount(Object o) { - DumpInfo di = (DumpInfo) o; + DumpInfo di = (DumpInfo) o; if (di.tagToResolve != null) { TagStub tagStub = di.tagToResolve; try {