aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2015-11-11 07:48:11 -0800
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2015-11-11 07:48:20 -0800
commit9d5b6c2faf091c975e27d6c7728dac786096d00c (patch)
tree6f3a76e1700e2161e8c4bb2af3278e6c63d96a40 /src/java
parentcbcaef48836939309cec989770aa3819455782db (diff)
prevent local reference table overflow
Diffstat (limited to 'src/java')
-rw-r--r--src/java/TypesUtils.cpp4
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;