On Tue, 1 Jun 2021 09:30:40 GMT, Jaroslav Tulach 
<github.com+26887752+jaroslavtul...@openjdk.org> wrote:

> There doesn't seem to be much support for the complete changes in #4245. To 
> get at least something useful from that endeavor I have extracted the test 
> for existing behavior of `-XX:+PreserveAllAnnotations` and I am offering it 
> in this pull request without any changes to the JVM behavior.

I suggest the following patch for the bug in AnnotationParser:


Index: src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git 
a/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java 
b/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java
--- a/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java  
(revision b4371e9bcaa1c8aa394b5eca409c5afc669cc146)
+++ b/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java  
(date 1622636986705)
@@ -116,6 +116,7 @@
         Map<Class<? extends Annotation>, Annotation> result =
             new LinkedHashMap<Class<? extends Annotation>, Annotation>();
         ByteBuffer buf = ByteBuffer.wrap(rawAnnotations);
+        for (int round = 0; round < 2 && buf.hasRemaining(); round++) {
         int numAnnotations = buf.getShort() & 0xFFFF;
         for (int i = 0; i < numAnnotations; i++) {
             Annotation a = parseAnnotation2(buf, constPool, container, false, 
selectAnnotationClasses);
@@ -128,6 +129,7 @@
             }
         }
         }
+        }
         return result;
     }

-------------

PR: https://git.openjdk.java.net/jdk/pull/4280

Reply via email to