Fix JNI templates
The JNI templates around array and object handling are wrong in the sense that they fail to delete local references for objects which have been assigned to fields/arrays. Fix this by invoking DeleteLocalRef. Change-Id: I1c31d81f4235d821ccd51c96be7b176f64284928 Signed-off-by: Robert Varga <robert.varga@pantheon.tech> Signed-off-by: Robert Varga <nite@hq.sk>
This commit is contained in:

committed by
Robert Varga

parent
2cf8430826
commit
e3b7ad7ade
@ -83,6 +83,7 @@ object_dto_field_setter_template = Template("""
|
||||
jobject ${field_reference_name} = (*env)->NewObject(env, ${field_reference_name}Class, ${field_reference_name}Constructor);
|
||||
${type_initialization}
|
||||
(*env)->SetObjectField(env, dto, ${field_reference_name}FieldId, ${field_reference_name});
|
||||
(*env)->DeleteLocalRef(env, ${field_reference_name});
|
||||
}
|
||||
""")
|
||||
|
||||
@ -96,8 +97,10 @@ object_array_dto_field_setter_template = Template("""
|
||||
jobject ${field_reference_name}ArrayElement = (*env)->NewObject(env, ${field_reference_name}Class, ${field_reference_name}Constructor);
|
||||
${type_initialization}
|
||||
(*env)->SetObjectArrayElement(env, ${field_reference_name}, _i, ${field_reference_name}ArrayElement);
|
||||
(*env)->DeleteLocalRef(env, ${field_reference_name}ArrayElement);
|
||||
}
|
||||
(*env)->SetObjectField(env, dto, ${field_reference_name}FieldId, ${field_reference_name});
|
||||
(*env)->DeleteLocalRef(env, ${field_reference_name});
|
||||
}
|
||||
""")
|
||||
|
||||
|
Reference in New Issue
Block a user