diff --git a/core/src/main/java/de/robv/android/xposed/XposedBridge.java b/core/src/main/java/de/robv/android/xposed/XposedBridge.java index f1e9ef40..eec4a227 100644 --- a/core/src/main/java/de/robv/android/xposed/XposedBridge.java +++ b/core/src/main/java/de/robv/android/xposed/XposedBridge.java @@ -79,7 +79,7 @@ public final class XposedBridge { public static volatile ClassLoader dummyClassLoader = null; - private static final ClassCastException castException = new ClassCastException("Return value's type from hook callback does not match the hooked method"); + private static final String castException = "Return value's type from hook callback does not match the hooked method"; private static final Method getCause; @@ -499,7 +499,7 @@ public final class XposedBridge { else { var result = param.getResult(); if (returnType != null && !returnType.isPrimitive() && !HookBridge.instanceOf(result, returnType)) { - throw castException; + throw new ClassCastException(castException); } return result; } diff --git a/core/src/main/jni/src/jni/hook_bridge.cpp b/core/src/main/jni/src/jni/hook_bridge.cpp index 60d23205..6a5fa69f 100644 --- a/core/src/main/jni/src/jni/hook_bridge.cpp +++ b/core/src/main/jni/src/jni/hook_bridge.cpp @@ -73,6 +73,8 @@ LSP_DEF_NATIVE_METHOD(jboolean, HookBridge, hookMethod, jobject hookMethod, ptr = std::make_unique(); hook_item = ptr.get(); newHook = true; + } else { + hook_item = ptr.get(); } } if (newHook) {