From b4db26f8462d4c0b1457dc62ae69a8cccbbc096c Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Fri, 14 Oct 2016 10:49:12 +0300 Subject: [PATCH] Interop/Runtime: do not reuse JNI local ref globally --- Interop/Runtime/src/callbacks/c/callbacks.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Interop/Runtime/src/callbacks/c/callbacks.c b/Interop/Runtime/src/callbacks/c/callbacks.c index d4a5b30b9f7..622853eb373 100644 --- a/Interop/Runtime/src/callbacks/c/callbacks.c +++ b/Interop/Runtime/src/callbacks/c/callbacks.c @@ -164,7 +164,11 @@ static void ffi_fun(ffi_cif *cif, void *ret, void **args, void *user_data) { static jmethodID ffiFunImpl0 = NULL; static jclass cls = NULL; if (ffiFunImpl0 == NULL) { - cls = (*env)->FindClass(env, "kotlin_native/interop/CallbacksKt"); + jclass clsLocal = (*env)->FindClass(env, "kotlin_native/interop/CallbacksKt"); + checkException(env); + assert(clsLocal != NULL); + + cls = (jclass) (*env)->NewGlobalRef(env, clsLocal); checkException(env); assert(cls != NULL);