From 73585ba076582f432838269206fb8afda230ffa4 Mon Sep 17 00:00:00 2001 From: honfika Date: Sat, 28 Jun 2014 08:04:27 +0200 Subject: [PATCH] 2nd tag saving problem fixed --- src/com/jpexs/decompiler/flash/SWF.java | 1 + src/com/jpexs/decompiler/flash/tags/Tag.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/jpexs/decompiler/flash/SWF.java b/src/com/jpexs/decompiler/flash/SWF.java index 3d0d469e2..ba48adb9d 100644 --- a/src/com/jpexs/decompiler/flash/SWF.java +++ b/src/com/jpexs/decompiler/flash/SWF.java @@ -451,6 +451,7 @@ public final class SWF implements TreeItem, Timelined { public void clearModified() { for (Tag tag : tags) { if (tag.isModified()) { + tag.createOriginalData(); tag.setModified(false); } } diff --git a/src/com/jpexs/decompiler/flash/tags/Tag.java b/src/com/jpexs/decompiler/flash/tags/Tag.java index f3d35e52c..04a964d38 100644 --- a/src/com/jpexs/decompiler/flash/tags/Tag.java +++ b/src/com/jpexs/decompiler/flash/tags/Tag.java @@ -68,7 +68,7 @@ public abstract class Tag implements NeedsCharacters, Exportable, ContainerItem, * Original tag data */ @Internal - private final ByteArrayRange originalData; + private ByteArrayRange originalData; public String getTagName() { return tagName; @@ -394,6 +394,15 @@ public abstract class Tag implements NeedsCharacters, Exportable, ContainerItem, modified = value; } + public void createOriginalData() { + byte[] data = getData(); + byte[] headerData = getHeader(data); + byte[] tagData = new byte[data.length + headerData.length]; + System.arraycopy(headerData, 0, tagData, 0, headerData.length); + System.arraycopy(data, 0, tagData, headerData.length, data.length); + originalData = new ByteArrayRange(tagData, 0, tagData.length); + } + public boolean isModified() { return modified; }