diff --git a/core/jni/android_app_Activity.cpp b/core/jni/android_app_Activity.cpp index b1d7e82c73ae6..56f4f01f8c809 100644 --- a/core/jni/android_app_Activity.cpp +++ b/core/jni/android_app_Activity.cpp @@ -15,16 +15,25 @@ */ #include -#include + +#include #include "core_jni_helpers.h" +extern "C" void android_dlwarning(void*, void (*)(void*, const char*)); + namespace android { static jstring getDlWarning_native(JNIEnv* env, jobject) { - const char* text = android_dlwarning(); - return text == nullptr ? nullptr : env->NewStringUTF(text); + std::string msg; + android_dlwarning(&msg, [](void* obj, const char* msg) { + if (msg != nullptr) { + *reinterpret_cast(obj) = msg; + } + }); + + return msg.empty() ? nullptr : env->NewStringUTF(msg.c_str()); } static const JNINativeMethod g_methods[] = {