summaryrefslogtreecommitdiff
path: root/runtime/native/java_lang_Class.cc
diff options
context:
space:
mode:
author Igor Murashkin <iam@google.com> 2016-02-03 20:13:59 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2016-02-03 20:13:59 +0000
commit071b933eb6e937ca6b9efa24e0e3a70a50eca975 (patch)
tree276d412a8c23d8292dfa6108f639e4534a910c28 /runtime/native/java_lang_Class.cc
parentc5b76b9328d77b83c80afed14a5b6e7009136e15 (diff)
parentdf187e4cc8b1b2dc6cb0043eb91d1dfd72cb490b (diff)
Merge changes from topic 'reflection_1_8'
* changes: Revert "Revert "reflection: Add new 1.8 AnnotatedElement methods and tests"" interpreter: Fix proxy method invocation with access checks enabled.
Diffstat (limited to 'runtime/native/java_lang_Class.cc')
-rw-r--r--runtime/native/java_lang_Class.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc
index 0ddd4a280c..a80585abca 100644
--- a/runtime/native/java_lang_Class.cc
+++ b/runtime/native/java_lang_Class.cc
@@ -469,14 +469,21 @@ static jobjectArray Class_getDeclaredMethodsUnchecked(JNIEnv* env, jobject javaT
return soa.AddLocalReference<jobjectArray>(ret.Get());
}
-static jobject Class_getDeclaredAnnotation(JNIEnv* env, jobject javaThis, jclass annotationType) {
+static jobject Class_getDeclaredAnnotation(JNIEnv* env, jobject javaThis, jclass annotationClass) {
ScopedFastNativeObjectAccess soa(env);
StackHandleScope<2> hs(soa.Self());
Handle<mirror::Class> klass(hs.NewHandle(DecodeClass(soa, javaThis)));
+
+ // Handle public contract to throw NPE if the "annotationClass" argument was null.
+ if (UNLIKELY(annotationClass == nullptr)) {
+ ThrowNullPointerException("annotationClass");
+ return nullptr;
+ }
+
if (klass->IsProxyClass() || klass->GetDexCache() == nullptr) {
return nullptr;
}
- Handle<mirror::Class> annotation_class(hs.NewHandle(soa.Decode<mirror::Class*>(annotationType)));
+ Handle<mirror::Class> annotation_class(hs.NewHandle(soa.Decode<mirror::Class*>(annotationClass)));
return soa.AddLocalReference<jobject>(
klass->GetDexFile().GetAnnotationForClass(klass, annotation_class));
}