This fixes an additional case where invoked methods are public but the
declaring class is package private.

Fixes gh-29046
This commit is contained in:
Brian Clozel 2022-09-01 15:14:58 +02:00
parent c470262c8e
commit 289d378aeb
1 changed files with 3 additions and 2 deletions

View File

@ -316,7 +316,7 @@ public abstract class InstrumentedBridgeMethods {
.onInstance(constructor).withArguments(arguments); .onInstance(constructor).withArguments(arguments);
try { try {
if (!Modifier.isPublic(constructor.getModifiers()) || if (!Modifier.isPublic(constructor.getModifiers()) ||
!Modifier.isPublic(constructor.getDeclaringClass().getModifiers()) || !constructor.canAccess(null)) { !Modifier.isPublic(constructor.getDeclaringClass().getModifiers())) {
constructor.setAccessible(true); constructor.setAccessible(true);
accessibilityChanged = true; accessibilityChanged = true;
} }
@ -339,7 +339,8 @@ public abstract class InstrumentedBridgeMethods {
Object result = null; Object result = null;
boolean accessibilityChanged = false; boolean accessibilityChanged = false;
try { try {
if (!Modifier.isPublic(method.getModifiers())) { if (!Modifier.isPublic(method.getModifiers())
|| !Modifier.isPublic(method.getDeclaringClass().getModifiers())) {
method.setAccessible(true); method.setAccessible(true);
accessibilityChanged = true; accessibilityChanged = true;
} }