]> source.dussan.org Git - aspectj.git/commitdiff
Add implementation note and JDK-8325536 link to Aj.preProcess
authorAlexander Kriegisch <Alexander@Kriegisch.name>
Fri, 9 Feb 2024 05:53:13 +0000 (12:53 +0700)
committerAlexander Kriegisch <Alexander@Kriegisch.name>
Fri, 9 Feb 2024 05:53:13 +0000 (12:53 +0700)
See https://bugs.openjdk.org/browse/JDK-8325536.

Relates to #277.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
loadtime/src/main/java/org/aspectj/weaver/loadtime/Aj.java

index a8526ee55be8a1e84b3086a2531f73af0349a604..4dbda9023ac8801a769c49f192b24be9ee9d2a05 100644 (file)
@@ -76,6 +76,11 @@ public class Aj implements ClassPreProcessor {
 
        @Override
        public byte[] preProcess(String className, final byte[] bytes, ClassLoader classLoader, ProtectionDomain protectionDomain) {
+
+               // Implementation note: Try to return null, whenever it is clear that the original byte code was not changed by the
+               // weaver. While not strictly necessary, the changes from commit 3e3c83712e are defensive programming, which helps
+               // to avoid problems like https://bugs.openjdk.org/browse/JDK-8325536, even if unfixed in the JDK.
+
                if (classLoader == null || className == null ||
                        classLoader.getClass().getName().equals(deleLoader) || classLoader.getClass().getName().equals(deleLoader2)) {
                        // skip boot loader, null classes (hibernate), or those from a reflection loader