VPP-229: fix NPE in JNI array handling 48/2148/3
authorMarek Gradzki <mgradzki@cisco.com>
Mon, 1 Aug 2016 05:59:06 +0000 (07:59 +0200)
committerKeith Burns <alagalah@gmail.com>
Tue, 2 Aug 2016 14:27:33 +0000 (14:27 +0000)
Change-Id: Ieb5182a7a3612e09bd2b28eb6a4abbdb4d29d34b
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
vpp-api/java/jvpp/gen/jvpp_c_gen.py

index 60e75b1..4d0ea0b 100644 (file)
@@ -107,7 +107,7 @@ u64_struct_setter_template = Template("""
     mp->${c_name} = clib_host_to_net_u64(${java_name});""")
 
 u8_array_struct_setter_template = Template("""
-    {
+    if (${java_name}) {
         jsize cnt = (*env)->GetArrayLength (env, ${java_name});
         size_t max_size = ${field_length};
         if (max_size != 0 && cnt > max_size) cnt = max_size;
@@ -117,7 +117,7 @@ u8_array_struct_setter_template = Template("""
 
 u16_array_struct_setter_template = Template("""
     jshort * ${java_name}ArrayElements = (*env)->GetShortArrayElements(env, ${java_name}, NULL);
-    {
+    if (${java_name}) {
         size_t _i;
         jsize cnt = (*env)->GetArrayLength (env, ${java_name});
         size_t max_size = ${field_length};
@@ -131,7 +131,7 @@ u16_array_struct_setter_template = Template("""
 
 u32_array_struct_setter_template = Template("""
     jint * ${java_name}ArrayElements = (*env)->GetIntArrayElements(env, ${java_name}, NULL);
-    {
+    if (${java_name}) {
         size_t _i;
         jsize cnt = (*env)->GetArrayLength (env, ${java_name});
         size_t max_size = ${field_length};
@@ -145,7 +145,7 @@ u32_array_struct_setter_template = Template("""
 
 u64_array_struct_setter_template = Template("""
     jlong * ${java_name}ArrayElements = (*env)->GetLongArrayElements(env, ${java_name}, NULL);
-    {
+    if (${java_name}) {
         size_t _i;
         jsize cnt = (*env)->GetArrayLength (env, ${java_name});
         size_t max_size = ${field_length};