From b298ca7e250d0e777556604f92e71fd4f588280c Mon Sep 17 00:00:00 2001 From: Honfika Date: Tue, 18 Mar 2014 22:03:08 +0100 Subject: [PATCH] tag recompile checking moved after tag resolve, other small fixes --- trunk/src/com/jpexs/decompiler/flash/SWF.java | 2 +- .../decompiler/flash/SWFInputStream.java | 69 ++++++++++--------- .../jpexs/decompiler/flash/gui/MainPanel.java | 2 +- .../decompiler/flash/tags/ShowFrameTag.java | 10 --- 4 files changed, 37 insertions(+), 46 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/SWF.java b/trunk/src/com/jpexs/decompiler/flash/SWF.java index b456bfe5a..fda2316dc 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWF.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWF.java @@ -592,7 +592,7 @@ public final class SWF implements TreeItem, Timelined { } else { boolean hasNonUnknownTag = false; for (Tag tag : tags) { - if (tag.getData().length > 0 && Tag.getRequiredTags().contains(tag.getId())) { + if (tag.getOriginalData().length > 0 && Tag.getRequiredTags().contains(tag.getId())) { hasNonUnknownTag = true; } } diff --git a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java index a103df429..5d7259ee6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java @@ -1263,45 +1263,46 @@ public class SWFInputStream extends InputStream { byte[] data = readBytes((int) tagLength); Tag ret = new Tag(swf, tagID, "Unresolved", data, pos); ret.forceWriteAsLong = readLong; - byte[] dataNew = ret.getData(); - int ignoreFirst = 0; - for (int i = 0; i < data.length; i++) { - if (i >= dataNew.length) { - break; - } - if (dataNew[i] != data[i]) { - if (ignoreFirst > 0) { - ignoreFirst--; - continue; - } - String e = ""; - e = ("TAG " + ret.toString() + " WRONG, "); - for (int j = i - 10; j <= i + 5; j++) { - while (j < 0) { - j++; - } - if (j >= data.length) { - break; - } - if (j >= dataNew.length) { - break; - } - if (j >= i) { - e += (Long.toHexString(data[j] & 0xff) + " ( is " + Long.toHexString(dataNew[j] & 0xff) + ") "); - } else { - e += (Long.toHexString(data[j] & 0xff) + " "); - } - } - logger.fine(e); - } - } if (resolve) { try { - return resolveTag(swf, ret, level, parallel, skipUnusualTags, gfx); + ret = resolveTag(swf, ret, level, parallel, skipUnusualTags, gfx); } catch (EndOfStreamException ex) { Logger.getLogger(SWFInputStream.class.getName()).log(Level.SEVERE, null, ex); - return ret; + } + + if (Configuration.debugMode.get()) { + byte[] dataNew = ret.getData(); + int ignoreFirst = 0; + for (int i = 0; i < data.length; i++) { + if (i >= dataNew.length) { + break; + } + if (dataNew[i] != data[i]) { + if (ignoreFirst > 0) { + ignoreFirst--; + continue; + } + String e = "TAG " + ret.toString() + " WRONG, "; + for (int j = i - 10; j <= i + 5; j++) { + while (j < 0) { + j++; + } + if (j >= data.length) { + break; + } + if (j >= dataNew.length) { + break; + } + if (j >= i) { + e += (Long.toHexString(data[j] & 0xff) + " ( is " + Long.toHexString(dataNew[j] & 0xff) + ") "); + } else { + e += (Long.toHexString(data[j] & 0xff) + " "); + } + } + logger.fine(e); + } + } } } return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java index f947f2755..d38b4f1a1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -2753,7 +2753,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec } } - private void createAndShowTempSwf(Object tagObj) { + private void createAndShowTempSwf(TreeItem tagObj) { SWF swf; try { if (tempFile != null) { diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java index cd46bdcbe..99705da13 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java @@ -62,16 +62,6 @@ public class ShowFrameTag extends Tag { super(swf, ID, "ShowFrame", new byte[0], 0); } - /** - * Gets data bytes - * - * @return Bytes of data - */ - @Override - public byte[] getData() { - return super.getData(); - } - public static boolean isNestedTagType(int tagTypeId) { return nestedTagTypeIds.contains(tagTypeId); }