From 7c5d5eac58c8b61dd7e5d86b0c414997ee14ad51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 16 Aug 2016 06:44:48 +0200 Subject: [PATCH] Merge ABCs on compile TODO: reorder correctly --- .../abc/avm2/instructions/AVM2Instruction.java | 2 ++ .../decompiler/flash/flexsdk/As3ScriptReplacer.java | 13 ++++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/AVM2Instruction.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/AVM2Instruction.java index 79a1a003a..ce3524922 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/AVM2Instruction.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/AVM2Instruction.java @@ -507,6 +507,7 @@ public class AVM2Instruction implements Cloneable, GraphSourceItem { if (byteDelta != 0) { code.updateInstructionByteCountByAddr(address, byteDelta, body); } + body.setModified(); } /** @@ -525,6 +526,7 @@ public class AVM2Instruction implements Cloneable, GraphSourceItem { if (byteDelta != 0) { code.updateInstructionByteCountByAddr(address, byteDelta, body); } + body.setModified(); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/flexsdk/As3ScriptReplacer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/flexsdk/As3ScriptReplacer.java index 809d8e96f..4cee8e3fa 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/flexsdk/As3ScriptReplacer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/flexsdk/As3ScriptReplacer.java @@ -158,16 +158,11 @@ public class As3ScriptReplacer extends MxmlcRunner { } else { //NOO } - int oldTagIndex = swf.getTags().indexOf((Tag) oldPack.abc.parentTag); oldPack.abc.pack(); // removes old classes/methods/scripts - if (oldPack.abc.script_info.isEmpty()) { - swf.removeTag(oldTagIndex); - } - ABCContainerTag lastTag = newTags.get(newTags.size() - 1); - ((Tag) lastTag).setSwf(swf); - swf.addTag(oldTagIndex + 1, (Tag) lastTag); - //TODO: looks like ABCs need to be merged. Parent class needs to be defined earlier than used :-( - ((Tag) lastTag).setModified(true); + ABCContainerTag newTagsLast = newTags.get(newTags.size() - 1); + ABC newLastAbc = newTagsLast.getABC(); + oldPack.abc.mergeABC(newLastAbc); + //TODO: reorder classes ((Tag) oldPack.abc.parentTag).setModified(true); } } finally {