@@ -521,6 +521,8 @@ def create_native_arr_call(self, arr_len, ty_info):
521521 clz_var = ty_info .java_fn_ty_arg [1 :].replace ("[" , "arr_of_" )
522522 self .c_array_class_caches .add (clz_var )
523523 return "(*env)->NewObjectArray(env, " + arr_len + ", " + clz_var + "_clz, NULL);\n "
524+ elif ty_info .subty .c_ty == "jstring" :
525+ return "(*env)->NewObjectArray(env, " + arr_len + ", String_clz, NULL);\n "
524526 else :
525527 return "(*env)->New" + ty_info .java_ty .strip ("[]" ).title () + "Array(env, " + arr_len + ")"
526528 def set_native_arr_contents (self , arr_name , arr_len , ty_info ):
@@ -531,6 +533,8 @@ def set_native_arr_contents(self, arr_name, arr_len, ty_info):
531533 else :
532534 assert False
533535 def get_native_arr_contents (self , arr_name , dest_name , arr_len , ty_info , copy ):
536+ if "String" in ty_info .java_ty :
537+ return None
534538 if ty_info .c_ty == "int8_tArray" or ty_info .c_ty == "int16_tArray" :
535539 fn_ty = "Byte" if ty_info .c_ty == "int8_tArray" else "Short"
536540 if copy :
@@ -590,11 +594,16 @@ def init_str(self):
590594 res = ""
591595 for ty in sorted (self .c_array_class_caches ):
592596 res = res + "static jclass " + ty + "_clz = NULL;\n "
597+ res = res + "static jclass String_clz = NULL;\n "
593598 res = res + "JNIEXPORT void Java_org_ldk_impl_bindings_init_1class_1cache(JNIEnv * env, jclass clz) {\n "
594599 for ty in sorted (self .c_array_class_caches ):
595600 res = res + "\t " + ty + "_clz = (*env)->FindClass(env, \" " + ty .replace ("arr_of_" , "[" ) + "\" );\n "
596601 res = res + "\t CHECK(" + ty + "_clz != NULL);\n "
597602 res = res + "\t " + ty + "_clz = (*env)->NewGlobalRef(env, " + ty + "_clz);\n "
603+ res = res + "\t String_clz = (*env)->FindClass(env, \" Ljava/lang/String;\" );\n "
604+ res = res + "\t CHECK(String_clz != NULL);\n "
605+ res = res + "\t String_clz = (*env)->NewGlobalRef(env, String_clz);\n "
606+
598607 res = res + "}\n "
599608 return res
600609
0 commit comments