diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/ABC.java b/trunk/src/com/jpexs/decompiler/flash/abc/ABC.java index cee75e157..447d26672 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/ABC.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/ABC.java @@ -748,7 +748,7 @@ public class ABC { if (t instanceof TraitSlotConst) { TraitSlotConst s = ((TraitSlotConst) t); if (s.isNamespace()) { - String key = constants.getNamespace(s.value_index).getName(constants); + String key = constants.getNamespace(s.value_index).getName(constants); //assume not null String val = constants.getMultiname(s.name_index).getNameWithNamespace(constants); namespaceMap.put(key, val); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/ScriptPack.java b/trunk/src/com/jpexs/decompiler/flash/abc/ScriptPack.java index 169787913..6241fd96e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/ScriptPack.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/ScriptPack.java @@ -75,7 +75,7 @@ public class ScriptPack implements TreeElementItem { Multiname name = abc.script_info.get(scriptIndex).traits.traits.get(t).getName(abc); Namespace ns = name.getNamespace(abc.constants); if ((ns.kind == Namespace.KIND_PACKAGE) || (ns.kind == Namespace.KIND_PACKAGE_INTERNAL)) { - packageName = ns.getName(abc.constants); + packageName = ns.getName(abc.constants); //assume not null } } return packageName; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindDefAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindDefAVM2Item.java index 9ec0b9f73..ea3823bef 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindDefAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindDefAVM2Item.java @@ -34,7 +34,7 @@ public class FindDefAVM2Item extends AVM2Item { @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) { - return writer.append(propertyName.getNamespace(localData.constantsAvm2).getName(localData.constantsAvm2)); + return writer.append(propertyName.getNamespace(localData.constantsAvm2).getName(localData.constantsAvm2)); //assume not null name } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java index 135a9971e..06a0772be 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java @@ -38,7 +38,7 @@ public class NameSpaceAVM2Item extends AVM2Item { return writer.append("*"); } ConstantPool constants = localData.constantsAvm2; - return writer.append(constants.getNamespace(namespaceIndex).toString(constants)); + return writer.append(constants.getNamespace(namespaceIndex).toString(constants)); //assume not null name } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/Multiname.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/Multiname.java index 6d3c9f6b8..4d440fb68 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/Multiname.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/Multiname.java @@ -158,7 +158,7 @@ public class Multiname { String name = name_index == 0 ? null : constants.getNamespace(index).getName(constants); int sub = -1; for (int n = 1; n < constants.getNamespaceCount(); n++) { - if (constants.getNamespace(n).kind == type && constants.getNamespace(n).getName(constants).equals(constants.getNamespace(index).getName(constants))) { + if (constants.getNamespace(n).kind == type && constants.getNamespace(n).hasName(constants.getNamespace(index).getName(constants),constants)) { sub++; } if (n == index) { diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/Namespace.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/Namespace.java index 79869c300..f70785b61 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/Namespace.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/Namespace.java @@ -94,11 +94,24 @@ public class Namespace { } return kindStr; } - + public String getName(ConstantPool constants) { if (name_index == 0) { return null; } return constants.getString(name_index); } + + public boolean hasName(String name, ConstantPool constants){ + if(name == null && name_index==0){ + return true; + } + if(name == null){ + return false; + } + if(name_index == 0){ + return false; + } + return constants.getString(name_index).equals(name); + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java index 967f9207a..338ed0796 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java @@ -49,7 +49,7 @@ public class ScriptInfo { Namespace ns = name.getNamespace(abc.constants); if ((ns.kind == Namespace.KIND_PACKAGE_INTERNAL) || (ns.kind == Namespace.KIND_PACKAGE)) { - String packageName = ns.getName(abc.constants); + String packageName = ns.getName(abc.constants); //assume not null package String objectName = name.getName(abc.constants, new ArrayList()); List traitIndices = new ArrayList<>(); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/ValueKind.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/ValueKind.java index 918eb3a15..071f39352 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/ValueKind.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/ValueKind.java @@ -135,7 +135,7 @@ public class ValueKind { case CONSTANT_ExplicitNamespace: case CONSTANT_StaticProtectedNs: case CONSTANT_PrivateNs: - ret = "\"" + constants.getNamespace(value_index).getName(constants) + "\""; + ret = "\"" + constants.getNamespace(value_index).getName(constants) + "\""; //assume not null name break; } return ret; @@ -177,7 +177,7 @@ public class ValueKind { case CONSTANT_ExplicitNamespace: case CONSTANT_StaticProtectedNs: case CONSTANT_PrivateNs: - ret = constants.getNamespace(value_index).getKindStr() + "(\"" + constants.getNamespace(value_index).getName(constants) + "\")"; + ret = constants.getNamespace(value_index).getKindStr() + "(\"" + constants.getNamespace(value_index).getName(constants) + "\")"; //assume not null name break; } return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java index 97dc9f3e8..7076868b3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java @@ -62,7 +62,7 @@ public abstract class Trait implements Serializable { break; } nsname = abcTag.getABC().nsValueToName(abc.constants.getNamespace(m.namespace_index).getName(abc.constants)); - if (nsname.equals("-")) { + if (nsname == null) { break; } if (nsname.contains(".")) { @@ -88,7 +88,7 @@ public abstract class Trait implements Serializable { } } - if ((!nsname.contains(":")) && (!nsname.isEmpty())) { + if (nsname!=null && (!nsname.contains(":")) && (!nsname.isEmpty())) { ret += " " + nsname; } if (ns != null) { @@ -127,7 +127,7 @@ public abstract class Trait implements Serializable { Namespace ns = abc.constants.getMultiname(name_index).getNamespace(abc.constants); if ((ns.kind == Namespace.KIND_PACKAGE) || (ns.kind == Namespace.KIND_PACKAGE_INTERNAL)) { String nsname = ns.getName(abc.constants); - writer.appendNoHilight("package " + nsname).newLine(); + writer.appendNoHilight("package " + nsname).newLine(); //assume not null name writer.appendNoHilight("{").newLine(); writer.indent(); toString(parent, path, abcTags, abc, isStatic, exportMode, scriptIndex, classIndex, writer, fullyQualifiedNames, parallel); @@ -141,7 +141,6 @@ public abstract class Trait implements Serializable { public void convertPackaged(Trait parent, String path, List abcTags, ABC abc, boolean isStatic, ScriptExportMode exportMode, int scriptIndex, int classIndex, NulWriter writer, List fullyQualifiedNames, boolean parallel) throws InterruptedException { Namespace ns = abc.constants.getMultiname(name_index).getNamespace(abc.constants); if ((ns.kind == Namespace.KIND_PACKAGE) || (ns.kind == Namespace.KIND_PACKAGE_INTERNAL)) { - String nsname = ns.getName(abc.constants); convert(parent, path, abcTags, abc, isStatic, exportMode, scriptIndex, classIndex, writer, fullyQualifiedNames, parallel); } } @@ -170,6 +169,6 @@ public abstract class Trait implements Serializable { Namespace ns = name.getNamespace(abc.constants); String packageName = ns.getName(abc.constants); String objectName = name.getName(abc.constants, new ArrayList()); - return packageName + "." + objectName; + return packageName + "." + objectName; //assume not null name } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java index a9733e186..572d05cb3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java @@ -96,7 +96,7 @@ public class TraitClass extends Trait implements TraitWithSlot { newimport = oldimport; newimport += "." + name; } - if (newimport.isEmpty()) { + if (newimport!=null && newimport.isEmpty()) { newimport = null; } if (newimport != null) { @@ -149,7 +149,7 @@ public class TraitClass extends Trait implements TraitWithSlot { } else if ((ns.kind != Namespace.KIND_PACKAGE) && (ns.kind != Namespace.KIND_PACKAGE_INTERNAL)) { return; } - if (newimport.equals("-")) { + if (newimport == null) { newimport = ""; } //if (!newimport.equals("")) { @@ -298,7 +298,7 @@ public class TraitClass extends Trait implements TraitWithSlot { private List getImportsUsages(List abcTags, ABC abc, List imports, List uses, List fullyQualifiedNames) { //constructor - String packageName = abc.instance_info.get(class_info).getName(abc.constants).getNamespace(abc.constants).getName(abc.constants); + String packageName = abc.instance_info.get(class_info).getName(abc.constants).getNamespace(abc.constants).getName(abc.constants); //assume not null name parseImportsUsagesFromMultiname(abcTags, abc, imports, uses, abc.constants.getMultiname(abc.instance_info.get(class_info).name_index), packageName, fullyQualifiedNames); @@ -337,7 +337,7 @@ public class TraitClass extends Trait implements TraitWithSlot { public GraphTextWriter toString(Trait parent, String path, List abcTags, ABC abc, boolean isStatic, ScriptExportMode exportMode, int scriptIndex, int classIndex, GraphTextWriter writer, List fullyQualifiedNames, boolean parallel) throws InterruptedException { writer.startClass(class_info); - String packageName = abc.instance_info.get(class_info).getName(abc.constants).getNamespace(abc.constants).getName(abc.constants); + String packageName = abc.instance_info.get(class_info).getName(abc.constants).getNamespace(abc.constants).getName(abc.constants); //assume not null name List namesInThisPackage = new ArrayList<>(); for (ABCContainerTag tag : abcTags) { for (ScriptInfo si : tag.getABC().script_info) { diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/abc/tablemodels/NamespaceTableModel.java b/trunk/src/com/jpexs/decompiler/flash/gui/abc/tablemodels/NamespaceTableModel.java index 94634bee8..576e36ce1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/abc/tablemodels/NamespaceTableModel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/abc/tablemodels/NamespaceTableModel.java @@ -122,7 +122,11 @@ public class NamespaceTableModel implements TableModel { if (rowIndex == 0) { return "-"; } - return abc.constants.getNamespace(rowIndex).getName(abc.constants); + String val = abc.constants.getNamespace(rowIndex).getName(abc.constants); + if(val == null){ + val = "-"; + } + return val; default: return null; } diff --git a/trunk/src/com/jpexs/decompiler/graph/TypeItem.java b/trunk/src/com/jpexs/decompiler/graph/TypeItem.java index 5932920bd..7634dd637 100644 --- a/trunk/src/com/jpexs/decompiler/graph/TypeItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/TypeItem.java @@ -103,7 +103,7 @@ public class TypeItem extends GraphTargetItem{ for(InstanceInfo ii:abc.instance_info){ Multiname mname=abc.constants.constant_multiname.get(ii.name_index); if(mname.getName(abc.constants, new ArrayList()).equals(name)){ - if(mname.getNamespace(abc.constants).getName(abc.constants).equals(pkg)){ + if(mname.getNamespace(abc.constants).hasName(pkg,abc.constants)){ return ii.name_index; } }