| Index: jni/JniLogSystem.cpp |
| diff --git a/jni/JniLogSystem.cpp b/jni/JniLogSystem.cpp |
| index 275b5ef85b7d0b56a91ba9a02434448db08de437..f3771e08c274bc2f16bd18281ad3314135a42432 100644 |
| --- a/jni/JniLogSystem.cpp |
| +++ b/jni/JniLogSystem.cpp |
| @@ -40,8 +40,9 @@ void JniLogSystemCallback::operator()(AdblockPlus::LogSystem::LogLevel logLevel, |
| { |
| JNIEnvAcquire env(GetJavaVM()); |
| - jclass clazz = env->GetObjectClass(GetCallbackObject()); |
| - jmethodID method = env->GetMethodID(clazz, "logCallback", "(" TYP("LogSystem$LogLevel") "Ljava/lang/String;Ljava/lang/String;)V"); |
| + jmethodID method = env->GetMethodID( |
| + *JniLocalReference<jclass>(*env, env->GetObjectClass(GetCallbackObject())), |
| + "logCallback", "(" TYP("LogSystem$LogLevel") "Ljava/lang/String;Ljava/lang/String;)V"); |
| // TODO: Set log level from Java and handle it here (to reduce C++->Java calls) |
| @@ -73,12 +74,12 @@ void JniLogSystemCallback::operator()(AdblockPlus::LogSystem::LogLevel logLevel, |
| if (enumClass) |
| { |
| jfieldID enumField = env->GetStaticFieldID(enumClass, enumName, TYP("LogSystem$LogLevel")); |
| - jobject jLogLevel = env->GetStaticObjectField(enumClass, enumField); |
| + JniLocalReference<jobject> jLogLevel(*env, env->GetStaticObjectField(enumClass, enumField)); |
| - jstring jMessage = env->NewStringUTF(message.c_str()); |
| - jstring jSource = env->NewStringUTF(source.c_str()); |
| + JniLocalReference<jstring> jMessage(*env, env->NewStringUTF(message.c_str())); |
| + JniLocalReference<jstring> jSource(*env, env->NewStringUTF(source.c_str())); |
| - env->CallVoidMethod(GetCallbackObject(), method, jLogLevel, jMessage, jSource); |
| + env->CallVoidMethod(GetCallbackObject(), method, *jLogLevel, *jMessage, *jSource); |
| } |
| CheckAndLogJavaException(*env); |