This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git


The following commit(s) were added to refs/heads/2.3-gae by this push:
     new c31adb0b Fixed NPE on Java 9+ when check if an array type is 
accessible.
c31adb0b is described below

commit c31adb0bbe442c8990ccc073a69e1408e1936577
Author: ddekany <[email protected]>
AuthorDate: Wed Mar 27 20:43:45 2024 +0100

    Fixed NPE on Java 9+ when check if an array type is accessible.
---
 freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java    | 5 ++++-
 freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java | 2 ++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java 
b/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
index 700d801f..1f5182af 100644
--- a/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
+++ b/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
@@ -39,7 +39,10 @@ public class _Java9Impl implements _Java9 {
     @Override
     public boolean isAccessibleAccordingToModuleExports(Class<?> 
accessedClass) {
         Module accessedModule = accessedClass.getModule();
-        Package accessedPackage = accessedClass.getPackage();
+        Package accessedPackage = accessedClass.getPackage(); // null for 
arrays!
+        if (accessedPackage == null) {
+            return true;
+        }
 
         return accessedModule.isExported(accessedPackage.getName(), 
ACCESSOR_MODULE);
     }
diff --git a/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java 
b/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
index 35cd1a4d..9612d5ba 100644
--- a/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
+++ b/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
@@ -41,6 +41,8 @@ public class Java9ImplTest {
         assertNotNull(_JavaVersions.JAVA_9);
         
assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(Document.class));
         
assertFalse(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(getSomeInternalClass()));
+        
assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(String[].class));
+        
assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(int.class));
     }
 
     private static Class<?> getSomeInternalClass() throws SAXException, 
IOException, ParserConfigurationException,

Reply via email to