Skip to content

Commit 5b0ef3e

Browse files
committed
java: avoid name conflicts with jni.h
Unbelievably, at least some versions of jni.h have a global symbol named "jvalue". So avoid using that name as a parameter or variable in our code. Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
1 parent 36ce201 commit 5b0ef3e

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

ompi/mpi/java/c/mpi_Info.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,20 @@ JNIEXPORT jlong JNICALL Java_mpi_Info_getNull(JNIEnv *env, jclass clazz)
4545
return (jlong)MPI_INFO_NULL;
4646
}
4747

48+
// At least some versions of jni.h have a global named "jvalue", and
49+
// we get a compiler warning if we have a parameter or variable of the
50+
// same name. So use "ljvalue" instead.
4851
JNIEXPORT void JNICALL Java_mpi_Info_set(
49-
JNIEnv *env, jobject jthis, jlong handle, jstring jkey, jstring jvalue)
52+
JNIEnv *env, jobject jthis, jlong handle, jstring jkey, jstring ljvalue)
5053
{
51-
const char *key = (*env)->GetStringUTFChars(env, jkey, NULL),
52-
*value = (*env)->GetStringUTFChars(env, jvalue, NULL);
54+
const char *key = (*env)->GetStringUTFChars(env, jkey, NULL),
55+
*value = (*env)->GetStringUTFChars(env, ljvalue, NULL);
5356

5457
int rc = MPI_Info_set((MPI_Info)handle, (char*)key, (char*)value);
5558
ompi_java_exceptionCheck(env, rc);
5659

57-
(*env)->ReleaseStringUTFChars(env, jkey, key);
58-
(*env)->ReleaseStringUTFChars(env, jvalue, value);
60+
(*env)->ReleaseStringUTFChars(env, jkey, key);
61+
(*env)->ReleaseStringUTFChars(env, ljvalue, value);
5962
}
6063

6164
JNIEXPORT jstring JNICALL Java_mpi_Info_get(
@@ -83,9 +86,12 @@ JNIEXPORT jstring JNICALL Java_mpi_Info_get(
8386
return NULL;
8487
}
8588

86-
jstring jvalue = (*env)->NewStringUTF(env, value);
89+
// At least some versions of jni.h have a global named "jvalue",
90+
// and we get a compiler warning if we have a parameter or
91+
// variable of the same name. So use "ljvalue" instead.
92+
jstring ljvalue = (*env)->NewStringUTF(env, value);
8793
free(value);
88-
return jvalue;
94+
return ljvalue;
8995
}
9096

9197
JNIEXPORT void JNICALL Java_mpi_Info_delete(

0 commit comments

Comments
 (0)