From 2f75a7b4ed08da8db1021be6a3e1ef122b41b67d Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Thu, 3 Dec 2015 11:07:07 +0100 Subject: [PATCH] #1098 Importing SWF XML fails fixed --- .../decompiler/flash/abc/avm2/AVM2ConstantPool.java | 9 +++++++++ .../jpexs/decompiler/flash/importers/SwfXmlImporter.java | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2ConstantPool.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2ConstantPool.java index 0600d21c1..d377887f5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2ConstantPool.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2ConstantPool.java @@ -25,6 +25,7 @@ import com.jpexs.decompiler.flash.abc.types.NamespaceSet; import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.flash.types.annotations.Internal; +import com.jpexs.decompiler.flash.types.annotations.SWFField; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.helpers.HashArrayList; import com.jpexs.helpers.utf8.Utf8PrintWriter; @@ -39,21 +40,29 @@ public class AVM2ConstantPool implements Cloneable { private static final Logger logger = Logger.getLogger(AVM2ConstantPool.class.getName()); + @SWFField private HashArrayList constant_int = new HashArrayList<>(); + @SWFField private HashArrayList constant_uint = new HashArrayList<>(); + @SWFField private HashArrayList constant_double = new HashArrayList<>(); /* Only for some minor versions */ + @SWFField private HashArrayList constant_decimal = new HashArrayList<>(); + @SWFField private HashArrayList constant_string = new HashArrayList<>(); + @SWFField private HashArrayList constant_namespace = new HashArrayList<>(); + @SWFField private HashArrayList constant_namespace_set = new HashArrayList<>(); + @SWFField private HashArrayList constant_multiname = new HashArrayList<>(); public AVM2ConstantPool() { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/SwfXmlImporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/SwfXmlImporter.java index 7cc28ea68..ef0a0f561 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/SwfXmlImporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/SwfXmlImporter.java @@ -96,6 +96,7 @@ import com.jpexs.decompiler.flash.types.shaperecords.EndShapeRecord; import com.jpexs.decompiler.flash.types.shaperecords.StraightEdgeRecord; import com.jpexs.decompiler.flash.types.shaperecords.StyleChangeRecord; import com.jpexs.helpers.ByteArrayRange; +import com.jpexs.helpers.HashArrayList; import com.jpexs.helpers.ReflectionTools; import java.io.IOException; import java.io.StringReader; @@ -205,7 +206,7 @@ public class SwfXmlImporter { Field field = getField(cls, name); Class childCls = field.getType(); if (List.class.isAssignableFrom(childCls)) { - List list = new ArrayList(); + List list = HashArrayList.class.isAssignableFrom(childCls) ? new HashArrayList() : new ArrayList(); for (int j = 0; j < child.getChildNodes().getLength(); j++) { Node childChildNode = child.getChildNodes().item(j); if (childChildNode instanceof Element) {