From 66d8ee522810a047090f26d03a9cc20ea4f30eed Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 11 Oct 2020 14:53:12 +0300 Subject: [PATCH] Fix get_jni_env. GitOrigin-RevId: 5da8136b7c96affd3a39194624dc35c415bfad68 --- td/tl/tl_jni_object.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/td/tl/tl_jni_object.cpp b/td/tl/tl_jni_object.cpp index 169e0dd3b..31af7508d 100644 --- a/td/tl/tl_jni_object.cpp +++ b/td/tl/tl_jni_object.cpp @@ -79,13 +79,16 @@ void register_native_method(JNIEnv *env, jclass clazz, std::string name, std::st std::unique_ptr get_jni_env(JavaVM *java_vm, jint jni_version) { JNIEnv *env = nullptr; - if (java_vm->GetEnv(reinterpret_cast(&env), jni_version) == JNI_EDETACHED && env != nullptr) { + if (java_vm->GetEnv(reinterpret_cast(&env), jni_version) == JNI_EDETACHED) { #ifdef JDK1_2 // if not Android JNI auto p_env = reinterpret_cast(&env); #else auto p_env = &env; #endif - java_vm->AttachCurrentThread(p_env, nullptr); + if (java_vm->AttachCurrentThread(p_env, nullptr) != JNI_OK) { + java_vm = nullptr; + env = nullptr; + } } else { java_vm = nullptr; }