Skip to content

Deleting local references where it doesn't exist #38

@samolego

Description

@samolego

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 ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions