diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/CodeItem.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/CodeItem.java index 3486f11f..e0841090 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/CodeItem.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/CodeItem.java @@ -345,14 +345,18 @@ public class CodeItem { out.indent(); out.annotate(2, "size = %d", elements.size()); - out.annotate(4, "first_key = %d", elements.get(0).getKey()); - out.annotate(0, "targets:"); - out.indent(); - for (int i=0; i> 8); List elements = instruction.getSwitchElements(); writer.writeUshort(elements.size()); for (SwitchElement element: elements) { @@ -538,12 +539,17 @@ public class CodeItemPool { public void writePackedSwitchPayload(@Nonnull DexWriter writer, @Nonnull PackedSwitchPayload instruction) throws IOException { - writer.writeUshort(instruction.getOpcode().value); + writer.writeUbyte(0); + writer.writeUbyte(instruction.getOpcode().value >> 8); List elements = instruction.getSwitchElements(); writer.writeUshort(elements.size()); - writer.writeInt(elements.get(0).getKey()); - for (SwitchElement element: elements) { - writer.writeInt(element.getOffset()); + if (elements.size() == 0) { + writer.writeInt(0); + } else { + writer.writeInt(elements.get(0).getKey()); + for (SwitchElement element: elements) { + writer.writeInt(element.getOffset()); + } } } }