diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2015-11-11 07:48:11 -0800 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2015-11-11 07:48:20 -0800 |
commit | 9d5b6c2faf091c975e27d6c7728dac786096d00c (patch) | |
tree | 6f3a76e1700e2161e8c4bb2af3278e6c63d96a40 /src/java | |
parent | cbcaef48836939309cec989770aa3819455782db (diff) |
prevent local reference table overflow
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/TypesUtils.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/java/TypesUtils.cpp b/src/java/TypesUtils.cpp index 4fe57e26..98939e65 100644 --- a/src/java/TypesUtils.cpp +++ b/src/java/TypesUtils.cpp @@ -220,11 +220,13 @@ static jobject hashmapObjectToJavaConverter(JNIEnv * env, Object * obj) jmethodID method = env->GetMethodID(cls, "put", "(Ljava/lang/Object;Ljava/lang/Object;)V"); Array * keys = hashMap->allKeys(); for(unsigned int i = 0 ; i < keys->count() ; i ++) { + PushLocalFrame(env, 32); Object * key = keys->objectAtIndex(i); jobject javaKey = mcObjectToJava(env, key); Object * value = hashMap->objectForKey(key); jobject javaValue = mcObjectToJava(env, value); env->CallVoidMethod(javaHashMap, method, javaKey, javaValue); + PopLocalFrame(env, NULL); } return javaHashMap; } @@ -238,11 +240,13 @@ static jobject arrayObjectToJavaConverter(JNIEnv * env, Object * obj) jmethodID method = env->GetMethodID(cls, "add", "(Ljava/lang/Object;)Z"); MCLog("add method %p", method); for(unsigned int i = 0 ; i < array->count() ; i ++) { + PushLocalFrame(env, 32); MCLog("converting object %s", MCUTF8(array->objectAtIndex(i))); jobject javaObject = mcObjectToJava(env, array->objectAtIndex(i)); MCLog("add object %p", javaObject); env->CallBooleanMethod(javaVector, method, javaObject); MCLog("added object %p", javaObject); + PopLocalFrame(env, NULL); } MCLog("array converted"); return javaVector; |