Fix backup race (#2416)

This commit is contained in:
LoveSy 2023-03-05 14:30:36 +08:00 committed by GitHub
parent d8cea17a80
commit 55afed974d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 2 deletions

View File

@ -89,9 +89,15 @@ LSP_DEF_NATIVE_METHOD(jboolean, HookBridge, hookMethod, jobject hookMethod,
hook_item->backup = lsplant::Hook(env, hookMethod, hooker_object, callback_method);
env->DeleteLocalRef(hooker_object);
}
JNIMonitor monitor(env, hook_item->backup);
jobject backup = nullptr;
{
std::unique_lock lk(backup_lock);
backup = hook_item->backup;
}
if (!backup) return JNI_FALSE;
JNIMonitor monitor(env, backup);
hook_item->callbacks.emplace(std::make_pair(priority, env->NewGlobalRef(callback)));
return hook_item->backup ? JNI_TRUE : JNI_FALSE;
return JNI_TRUE;
}
LSP_DEF_NATIVE_METHOD(jboolean, HookBridge, unhookMethod, jobject hookMethod, jobject callback) {