[jboss-jira] [JBoss JIRA] (JASSIST-149) ClassFormatError when using an ExprEditor, replacing a MethodCall after using insertBefore in a FieldAccess
Shigeru Chiba (JIRA)
jira-events at lists.jboss.org
Wed Feb 1 04:58:48 EST 2012
[ https://issues.jboss.org/browse/JASSIST-149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shigeru Chiba resolved JASSIST-149.
-----------------------------------
Fix Version/s: 3.16.0-GA
Resolution: Done
> ClassFormatError when using an ExprEditor, replacing a MethodCall after using insertBefore in a FieldAccess
> -----------------------------------------------------------------------------------------------------------
>
> Key: JASSIST-149
> URL: https://issues.jboss.org/browse/JASSIST-149
> Project: Javassist
> Issue Type: Bug
> Affects Versions: 3.15.0-GA
> Environment: JRE 1.6
> Reporter: Ben Romberg
> Assignee: Shigeru Chiba
> Fix For: 3.16.0-GA
>
>
> To reproduce, use the following ExprEditor:
> new ExprEditor() {
> edit(FieldAccess fieldAccess) {
> behavior.insertBefore(...);
> }
> edit(MethodCall methodCall) {
> methodCall.replace(...);
> }
> }
> Now, use the ExprEditor on a method assigning a field first and then calling a method. When loading the modified class, the following exception should occur:
> java.lang.ClassFormatError: Invalid pc in LineNumberTable in class file de/andrena/next/systemtest/pure/PureOnlyForOwnMethodsFieldsAndParametersSystemTest$TargetClass
> at java.lang.ClassLoader.defineClass1(Native Method)
> at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
> at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
> at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
> at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> at java.lang.Class.getDeclaredFields0(Native Method)
> at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
> at java.lang.Class.getDeclaredFields(Class.java:1743)
> ...
> Expected behavior:
> * Either correctly replacing the methodCall without corrupting the line-number-table, or
> * throwing a CannotCompileException when trying to insertBefore within an ExprEditor.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list