Deleting local references where it doesn't exist
samolego opened this issue · 0 comments
samolego commented
I was digging through the code when trying to get #37 to work ...
static void jllama_log_callback(enum ggml_log_level level, const char *text, void *user_data)
{
if (g_log_callback == nullptr)
return;
JNIEnv *env;
g_vm->GetEnv(reinterpret_cast<void **>(&env), JNI_VERSION_1_2);
jobject java_log_level;
switch (level)
{
case GGML_LOG_LEVEL_ERROR:
java_log_level = o_log_level_error;
break;
case GGML_LOG_LEVEL_WARN:
java_log_level = o_log_level_warn;
break;
case GGML_LOG_LEVEL_INFO:
java_log_level = o_log_level_info;
break;
default:
java_log_level = o_log_level_debug;
break;
}
jstring java_text = env->NewStringUTF(text);
env->CallVoidMethod(g_log_callback, m_biconsumer_accept, java_log_level, java_text);
// Why is this getting deleted? LocalRef is not created ..?
env->DeleteLocalRef(java_log_level);
env->DeleteLocalRef(java_text);
}This crashes for me, but if I comment it out, it works fine ...