diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java index 244766bc..12337a33 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java @@ -68,7 +68,7 @@ public class DexBackedClassDef implements ClassDef { this.name = dexBuf.getType(dexBuf.readSmallUint(classDefOffset)); this.accessFlags = dexBuf.readSmallUint(classDefOffset + ACCESS_FLAGS_OFFSET); - this.superclass = dexBuf.getOptionalString(dexBuf.readOptionalUint(classDefOffset + SUPERCLASS_OFFSET)); + this.superclass = dexBuf.getOptionalType(dexBuf.readOptionalUint(classDefOffset + SUPERCLASS_OFFSET)); this.interfacesOffset = dexBuf.readSmallUint(classDefOffset + INTERFACES_OFFSET); this.sourceFile = dexBuf.getOptionalString(dexBuf.readOptionalUint(classDefOffset + SOURCE_FILE_OFFSET)); @@ -94,7 +94,7 @@ public class DexBackedClassDef implements ClassDef { @Nonnull @Override public String readItem(int index) { - return dexBuf.getString(dexBuf.readSmallUint(interfacesOffset + 4 + (2*index))); + return dexBuf.getType(dexBuf.readSmallUint(interfacesOffset + 4 + (2*index))); } @Override public int size() { return size; } diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBuffer.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBuffer.java index f17fa1bb..8bb4c7dc 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBuffer.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBuffer.java @@ -219,6 +219,14 @@ public class DexBuffer { return Utf8Utils.utf8BytesToString(buf, reader.getOffset(), utf16Length); } + @Nullable + public String getOptionalType(int typeIndex) { + if (typeIndex == -1) { + return null; + } + return getType(typeIndex); + } + @Nullable public String getOptionalString(int stringIndex) { if (stringIndex == -1) { diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexReader.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexReader.java index 7e6156e4..6f0934ee 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexReader.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexReader.java @@ -56,6 +56,7 @@ public class DexReader { public String getString(int stringIndex) { return dexBuf.getString(stringIndex); } public String getOptionalString(int stringIndex) { return dexBuf.getOptionalString(stringIndex); } public String getType(int typeIndex) { return dexBuf.getType(typeIndex); } + public String getOptionalType(int typeIndex) { return dexBuf.getOptionalType(typeIndex); } public String getField(int fieldIndex) { return dexBuf.getField(fieldIndex); } public String getMethod(int methodIndex) { return dexBuf.getMethod(methodIndex); } public String getReference(int type, int index) { return dexBuf.getReference(type, index); }