From f939e912b53bccab66013c694442fa2f40d970e1 Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Fri, 19 Apr 2013 14:29:07 -0700 Subject: [PATCH] Fix issue with out-of-order iteration of virtual methods --- .../jf/dexlib2/dexbacked/DexBackedClassDef.java | 6 +++--- .../org/jf/dexlib2/dexbacked/DexBackedField.java | 2 +- .../org/jf/dexlib2/dexbacked/DexBackedMethod.java | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) 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 1a554c1f..e888f131 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java @@ -417,7 +417,7 @@ public class DexBackedClassDef extends BaseTypeReference implements ClassDef { return instanceFieldsOffset; } DexReader reader = new DexReader(dexFile, staticFieldsOffset); - DexBackedField.skipAllFields(reader, staticFieldCount); + DexBackedField.skipFields(reader, staticFieldCount); instanceFieldsOffset = reader.getOffset(); return instanceFieldsOffset; } @@ -427,7 +427,7 @@ public class DexBackedClassDef extends BaseTypeReference implements ClassDef { return directMethodsOffset; } DexReader reader = dexFile.readerAt(getInstanceFieldsOffset()); - DexBackedField.skipAllFields(reader, instanceFieldCount); + DexBackedField.skipFields(reader, instanceFieldCount); directMethodsOffset = reader.getOffset(); return directMethodsOffset; } @@ -437,7 +437,7 @@ public class DexBackedClassDef extends BaseTypeReference implements ClassDef { return virtualMethodsOffset; } DexReader reader = dexFile.readerAt(getDirectMethodsOffset()); - DexBackedField.skipAllFields(reader, instanceFieldCount); + DexBackedMethod.skipMethods(reader, directMethodCount); virtualMethodsOffset = reader.getOffset(); return virtualMethodsOffset; } diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java index fa32aac0..303e8b7e 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java @@ -114,7 +114,7 @@ public class DexBackedField extends BaseFieldReference implements Field { * @param reader The reader to skip * @param count The number of encoded_field structures to skip over */ - public static void skipAllFields(@Nonnull DexReader reader, int count) { + public static void skipFields(@Nonnull DexReader reader, int count) { for (int i=0; i