diff options
Diffstat (limited to 'libjava/testsuite/libjava.jni')
| -rw-r--r-- | libjava/testsuite/libjava.jni/register2.c | 48 | ||||
| -rw-r--r-- | libjava/testsuite/libjava.jni/register2.java | 27 | ||||
| -rw-r--r-- | libjava/testsuite/libjava.jni/register2.out | 2 |
3 files changed, 77 insertions, 0 deletions
diff --git a/libjava/testsuite/libjava.jni/register2.c b/libjava/testsuite/libjava.jni/register2.c new file mode 100644 index 00000000000..1ed10a88a23 --- /dev/null +++ b/libjava/testsuite/libjava.jni/register2.c @@ -0,0 +1,48 @@ +#include <stdlib.h> +#include <assert.h> +#include <register2.h> + +static int +twentythree (JNIEnv *env, jclass k) +{ + return 23; +} + +static int +oneninetyseven (JNIEnv *env, jclass k) +{ + return 197; +} + +JNIEXPORT jint JNICALL +JNI_OnLoad (JavaVM *vm, void *nothing) +{ + JNIEnv *env; + JNINativeMethod meth; + jclass k; + jint r; + + r = (*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_2); + assert (r == JNI_OK); + k = (*env)->FindClass (env, "register2$I1"); + assert (k != NULL); + + meth.name = "doit"; + meth.signature = "()I"; + meth.fnPtr = twentythree; + + r = (*env)->RegisterNatives (env, k, &meth, 1); + assert (r == JNI_OK); + + k = (*env)->FindClass (env, "register2$I2"); + assert (k != NULL); + + meth.name = "doit"; + meth.signature = "()I"; + meth.fnPtr = oneninetyseven; + + r = (*env)->RegisterNatives (env, k, &meth, 1); + assert (r == JNI_OK); + + return JNI_VERSION_1_2; +} diff --git a/libjava/testsuite/libjava.jni/register2.java b/libjava/testsuite/libjava.jni/register2.java new file mode 100644 index 00000000000..2d6c56a3b02 --- /dev/null +++ b/libjava/testsuite/libjava.jni/register2.java @@ -0,0 +1,27 @@ +// Another test of RegisterNatives. +// We neglected to track the class name in our internal hash table. +// This is a regression test for the fix. + +public class register2 +{ + static + { + System.loadLibrary ("register2"); + } + + static class I1 + { + public static native int doit (); + } + + static class I2 + { + public static native int doit (); + } + + public static void main (String[] args) + { + System.out.println (new I1().doit()); + System.out.println (new I2().doit()); + } +} diff --git a/libjava/testsuite/libjava.jni/register2.out b/libjava/testsuite/libjava.jni/register2.out new file mode 100644 index 00000000000..5b90358a22b --- /dev/null +++ b/libjava/testsuite/libjava.jni/register2.out @@ -0,0 +1,2 @@ +23 +197 |

