diff options
author | Narayan Kamath <narayan@google.com> | 2014-07-11 19:15:11 +0100 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2014-08-01 14:53:30 +0100 |
commit | 1268b742c8cff7318dc0b5b283cbaeabfe0725ba (patch) | |
tree | 62ccc7504d91617154c6474b933562cc70255fce /test/004-JniTest | |
parent | 89c210bf418a152ccabfbbf853ddcce33aea450d (diff) | |
download | art-1268b742c8cff7318dc0b5b283cbaeabfe0725ba.tar.gz art-1268b742c8cff7318dc0b5b283cbaeabfe0725ba.tar.bz2 art-1268b742c8cff7318dc0b5b283cbaeabfe0725ba.zip |
Fix broken JNI IsAssignableFrom.
The expected argument order was the opposite of what the spec
dictated.
Reported-By: Mikhail Naganov <mnaganov@google.com>
bug: 16531674
Change-Id: I1ebc6d5814ebb4feeb96f3ecdf1a4602da4ba7ce
Diffstat (limited to 'test/004-JniTest')
-rw-r--r-- | test/004-JniTest/jni_test.cc | 5 | ||||
-rw-r--r-- | test/004-JniTest/src/Main.java | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/test/004-JniTest/jni_test.cc b/test/004-JniTest/jni_test.cc index 4909a4a77c..554712aa55 100644 --- a/test/004-JniTest/jni_test.cc +++ b/test/004-JniTest/jni_test.cc @@ -286,3 +286,8 @@ extern "C" jchar JNICALL Java_Main_charMethod(JNIEnv* env, jclass klacc, jchar c return char_returns[c1]; } + +extern "C" JNIEXPORT jboolean JNICALL Java_Main_nativeIsAssignableFrom(JNIEnv* env, jclass, + jclass from, jclass to) { + return env->IsAssignableFrom(from, to); +} diff --git a/test/004-JniTest/src/Main.java b/test/004-JniTest/src/Main.java index 11c80f5a59..ae133becbc 100644 --- a/test/004-JniTest/src/Main.java +++ b/test/004-JniTest/src/Main.java @@ -29,6 +29,7 @@ public class Main { testShortMethod(); testBooleanMethod(); testCharMethod(); + testIsAssignableFromOnPrimitiveTypes(); } private static native void testFindClassOnAttachedNativeThread(); @@ -151,4 +152,19 @@ public class Main { } } } + + // http://b/16531674 + private static void testIsAssignableFromOnPrimitiveTypes() { + if (!nativeIsAssignableFrom(int.class, Integer.TYPE)) { + System.out.println("IsAssignableFrom(int.class, Integer.TYPE) returned false, expected true"); + throw new AssertionError(); + } + + if (!nativeIsAssignableFrom(Integer.TYPE, int.class)) { + System.out.println("IsAssignableFrom(Integer.TYPE, int.class) returned false, expected true"); + throw new AssertionError(); + } + } + + native static boolean nativeIsAssignableFrom(Class<?> from, Class<?> to); } |