aboutsummaryrefslogtreecommitdiff
path: root/src/jdk.dynalink/share/classes/jdk
diff options
context:
space:
mode:
authorHannes Wallnöfer <hannesw@openjdk.org>2018-12-05 19:17:22 +0100
committerHannes Wallnöfer <hannesw@openjdk.org>2018-12-05 19:17:22 +0100
commit74fa722567cccf62c417e8f189ab75b8de03d85e (patch)
treea4ffea2625afab66ad3b4673650c8f49bac113c9 /src/jdk.dynalink/share/classes/jdk
parent055ed2b789765f55e46745be5d6a4d813f01e0cc (diff)
downloadJetBrainsRuntime-74fa722567cccf62c417e8f189ab75b8de03d85e.tar.gz
8214795: Add safety check to dynalink inner class lookup
Reviewed-by: sundar, attila
Diffstat (limited to 'src/jdk.dynalink/share/classes/jdk')
-rw-r--r--src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java
index 22e15013c32..fbdeccb6424 100644
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/AccessibleMembersLookup.java
@@ -216,7 +216,10 @@ class AccessibleMembersLookup {
// were not yet loaded, they'll only get loaded in a non-resolved state; no static initializers for
// them will trigger just by doing this.
// Don't overwrite an inner class with an inherited inner class with the same name.
- innerClasses.putIfAbsent(innerClass.getSimpleName(), innerClass);
+ Class<?> previousClass = innerClasses.get(innerClass.getSimpleName());
+ if (previousClass == null || previousClass.getDeclaringClass().isAssignableFrom(innerClass.getDeclaringClass())) {
+ innerClasses.put(innerClass.getSimpleName(), innerClass);
+ }
}
} else {
searchSuperTypes = true;