Skip to content

Commit 26c345e

Browse files
committed
close fommil#53
1 parent 1ac468a commit 26c345e

File tree

1 file changed

+22
-10
lines changed
  • generator/src/main/resources/com/github/fommil/netlib/generator

1 file changed

+22
-10
lines changed

generator/src/main/resources/com/github/fommil/netlib/generator/netlib-jni.stg

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,17 @@ $members; separator="\n\n"$
4444
>>
4545

4646
array_init(type, name) ::= <<
47-
$type$ * jni_$name$ = (*env)->GetPrimitiveArrayCritical(env, $name$, JNI_FALSE);
48-
check_memory(env, jni_$name$);
47+
$type$ * jni_$name$ = NULL;
48+
if ($name$ != NULL) {
49+
jni_$name$ = (*env)->GetPrimitiveArrayCritical(env, $name$, JNI_FALSE);
50+
check_memory(env, jni_$name$);
51+
}
4952
>>
5053

5154
array_clean(name) ::= <<
52-
(*env)->ReleasePrimitiveArrayCritical(env, $name$, jni_$name$, 0);
55+
if ($name$ != NULL) {
56+
(*env)->ReleasePrimitiveArrayCritical(env, $name$, jni_$name$, 0);
57+
}
5358
>>
5459

5560
jdoubleArray_init(name, type="jdouble") ::= "$array_init(type, name)$"
@@ -60,16 +65,23 @@ jintArray_init(name, type="jint") ::= "$array_init(type, name)$"
6065
jintArray_clean(name) ::= "$array_clean(name)$"
6166

6267
jbooleanArray_init(name) ::= <<
63-
jboolean * jni_$name$_raw = (*env)->GetPrimitiveArrayCritical(env, $name$, JNI_FALSE);
64-
check_memory(env, jni_$name$_raw);
65-
jint jni_$name$_size = (*env)->GetArrayLength(env, $name$);
66-
int* jni_$name$ = jbooleanArray2intArray(env, jni_$name$_raw, jni_$name$_size);
68+
jboolean * jni_$name$_raw = NULL;
69+
jint jni_$name$_size = 0;
70+
int* jni_$name$ = NULL;
71+
if ($name$ != NULL) {
72+
jni_$name$_raw = (*env)->GetPrimitiveArrayCritical(env, $name$, JNI_FALSE);
73+
check_memory(env, jni_$name$_raw);
74+
jni_$name$_size = (*env)->GetArrayLength(env, $name$);
75+
jni_$name$ = jbooleanArray2intArray(env, jni_$name$_raw, jni_$name$_size);
76+
}
6777
>>
6878

6979
jbooleanArray_clean(name) ::= <<
70-
intArray2jbooleanArray(jni_$name$, jni_$name$_raw, jni_$name$_size);
71-
free(jni_$name$);
72-
(*env)->ReleasePrimitiveArrayCritical(env, $name$, jni_$name$_raw, 0);
80+
if ($name$ != NULL) {
81+
intArray2jbooleanArray(jni_$name$, jni_$name$_raw, jni_$name$_size);
82+
free(jni_$name$);
83+
(*env)->ReleasePrimitiveArrayCritical(env, $name$, jni_$name$_raw, 0);
84+
}
7385
>>
7486

7587
jstring_init(name) ::= <<

0 commit comments

Comments
 (0)