[jboss-cvs] javassist/src/main/javassist/convert ...
Shigeru Chiba
chiba at is.titech.ac.jp
Thu Oct 5 11:43:49 EDT 2006
User: chiba
Date: 06/10/05 11:43:49
Modified: src/main/javassist/convert TransformReadField.java
Log:
fixed a bug in CodeConverter#replaceFieldRead/Write() on field shadowing
Revision Changes Path
1.8 +13 -1 javassist/src/main/javassist/convert/TransformReadField.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: TransformReadField.java
===================================================================
RCS file: /cvsroot/jboss/javassist/src/main/javassist/convert/TransformReadField.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- TransformReadField.java 11 Jan 2006 06:45:55 -0000 1.7
+++ TransformReadField.java 5 Oct 2006 15:43:49 -0000 1.8
@@ -46,13 +46,25 @@
try {
CtClass c = pool.get(cp.getFieldrefClassName(index));
- if (is_private ? c == fclass : c.subclassOf(fclass))
+ if (c == fclass || (!is_private && isFieldInSuper(c, fclass, fname)))
return cp.getFieldrefType(index);
}
catch (NotFoundException e) {}
return null;
}
+ static boolean isFieldInSuper(CtClass clazz, CtClass fclass, String fname) {
+ if (!clazz.subclassOf(fclass))
+ return false;
+
+ try {
+ CtField f = clazz.getField(fname);
+ return f.getDeclaringClass() == fclass;
+ }
+ catch (NotFoundException e) {}
+ return false;
+ }
+
public int transform(CtClass tclazz, int pos, CodeIterator iterator,
ConstPool cp) throws BadBytecode
{
More information about the jboss-cvs-commits
mailing list