Pietro Ferrara created BCEL-289:
-----------------------------------

             Summary: Crash when parsing constructor of inner classes with 
parameters annotated
                 Key: BCEL-289
                 URL: https://issues.apache.org/jira/browse/BCEL-289
             Project: Commons BCEL
          Issue Type: Bug
          Components: Parser
    Affects Versions: 6.0
            Reporter: Pietro Ferrara
            Priority: Critical
             Fix For: 6.1


BCEL crashes when parsing the constructor of an inner class whose parameters 
are annotated. For instance, when parsing the jar obtained from the following 
classes:

public @interface A {}
public @interface B {}
public class Test {
    public class Inner {
        public Inner(@A Object a, @B Object b) {}
    }
}

In particular:


                ClassParser cp = new ClassParser(args[0]);
                ClassGen cg = new ClassGen(cp.parse());
                MethodGen mg = new MethodGen(cg.getMethodAt(0), 
cg.getClassName(), cg.getConstantPool());
                mg.getAnnotationsOnParameter(0);

(where args[0] points to Test$Inner.class)

you get

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
        at 
org.apache.bcel.generic.MethodGen.ensureExistingParameterAnnotationsUnpacked(MethodGen.java:1120)
        at 
org.apache.bcel.generic.MethodGen.getAnnotationsOnParameter(MethodGen.java:1073)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to