From 8efe81979f7c9bbe4b2744621bde274abbc19bd0 Mon Sep 17 00:00:00 2001 From: Nico Mexis Date: Thu, 28 Sep 2023 09:04:47 +0200 Subject: [PATCH 1/2] Fix bug Nico found randomly cherry-pick f90e6bf77f097c6145801c17757f8e7d58d207e4 --- .../java/com/googlecode/d2j/dex/writer/ev/EncodedValue.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dex-writer/src/main/java/com/googlecode/d2j/dex/writer/ev/EncodedValue.java b/dex-writer/src/main/java/com/googlecode/d2j/dex/writer/ev/EncodedValue.java index b655fc386..307be486c 100644 --- a/dex-writer/src/main/java/com/googlecode/d2j/dex/writer/ev/EncodedValue.java +++ b/dex-writer/src/main/java/com/googlecode/d2j/dex/writer/ev/EncodedValue.java @@ -415,7 +415,7 @@ public int compareTo(EncodedValue o) { case VALUE_METHOD_HANDLE: case VALUE_METHOD_TYPE: if (value instanceof Comparable) { - return ((Comparable) value).compareTo(value); + return ((Comparable) value).compareTo(o.value); } else { throw new RuntimeException(); } From 4eaf64d2d68f515dec6596bb53410697bd066526 Mon Sep 17 00:00:00 2001 From: Nico Mexis Date: Thu, 28 Sep 2023 09:04:57 +0200 Subject: [PATCH 2/2] Workaround for #25 --- .../src/main/java/com/googlecode/d2j/dex/ExDex2Asm.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dex-translator/src/main/java/com/googlecode/d2j/dex/ExDex2Asm.java b/dex-translator/src/main/java/com/googlecode/d2j/dex/ExDex2Asm.java index bd0da422c..2da4e8d69 100644 --- a/dex-translator/src/main/java/com/googlecode/d2j/dex/ExDex2Asm.java +++ b/dex-translator/src/main/java/com/googlecode/d2j/dex/ExDex2Asm.java @@ -48,7 +48,13 @@ public void convertCode(DexMethodNode methodNode, MethodVisitor mv, ClzCtx clzCt } } // code convert ok, copy to MethodWriter and check for Size - mn.accept(mv); + try { + mn.accept(mv); + } catch (Exception e) { + System.out.println("Cannot convert " + clzCtx.classDescriptor); + if (exceptionHandler != null) + exceptionHandler.handleMethodTranslateException(methodNode.method, methodNode, mn, e); + } if (mw != null) { try { AsmBridge.sizeOfMethodWriter(mw);