From 6b03c6397a450beb41b26a9c3d0746b098e4ec3f Mon Sep 17 00:00:00 2001 From: LoveSy Date: Sun, 8 Jan 2023 16:17:00 +0800 Subject: [PATCH] Fix method signature --- core/src/main/jni/src/jni/dex_parser.cpp | 5 +++-- .../main/java/io/github/libxposed/utils/DexParser.java | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/core/src/main/jni/src/jni/dex_parser.cpp b/core/src/main/jni/src/jni/dex_parser.cpp index e5b967c8..9262d99a 100644 --- a/core/src/main/jni/src/jni/dex_parser.cpp +++ b/core/src/main/jni/src/jni/dex_parser.cpp @@ -661,9 +661,10 @@ namespace lspd { env->SetIntArrayRegion(annotations, 0, static_cast(field_annotations.size()), field_annotations.data()); - stopped = env->CallBooleanMethod(member_visitor, visit_field, field_idx, - access_flags, annotations); + env->CallVoidMethod(member_visitor, visit_field, field_idx, + access_flags, annotations); env->DeleteLocalRef(annotations); + stopped = env->CallBooleanMethod(member_visitor, stop); if (stopped == JNI_TRUE) break; } if (stopped == JNI_TRUE) break; diff --git a/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java b/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java index 1a5d820d..22745082 100644 --- a/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java +++ b/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java @@ -105,19 +105,19 @@ public interface DexParser extends Closeable { Array[] getArrays(); interface EarlyStopVisitor { - void stop(); + boolean stop(); } interface MemberVisitor extends EarlyStopVisitor { } - interface ClassVisitor { + interface ClassVisitor extends EarlyStopVisitor { @Nullable MemberVisitor visit(int clazz, int accessFlags, int superClass, @NonNull int[] interfaces, int sourceFile, @NonNull int[] staticFields, @NonNull int[] staticFieldsAccessFlags, @NonNull int[] instanceFields, @NonNull int[] instanceFieldsAccessFlags, @NonNull int[] directMethods, @NonNull int[] directMethodsAccessFlags, @NonNull int[] virtualMethods, @NonNull int[] virtualMethodsAccessFlags, @NonNull int[] annotations); } interface FieldVisitor extends MemberVisitor { - boolean visit(int field, int accessFlags, @NonNull int[] annotations); + void visit(int field, int accessFlags, @NonNull int[] annotations); } interface MethodVisitor extends MemberVisitor { @@ -125,8 +125,8 @@ public interface DexParser extends Closeable { MethodBodyVisitor visit(int method, int accessFlags, boolean hasBody, @NonNull int[] annotations, @NonNull int[] parameterAnnotations); } - interface MethodBodyVisitor extends MemberVisitor { - boolean visit(int method, int accessFlags, @NonNull int[] referredStrings, @NonNull int[] invokedMethods, @NonNull int[] accessedFields, @NonNull int[] assignedFields, @NonNull byte[] opcodes); + interface MethodBodyVisitor { + void visit(int method, int accessFlags, @NonNull int[] referredStrings, @NonNull int[] invokedMethods, @NonNull int[] accessedFields, @NonNull int[] assignedFields, @NonNull byte[] opcodes); } void visitDefinedClasses(@NonNull ClassVisitor visitor) throws IllegalStateException;