Kaynağa Gözat

fixed a bug in CodeConverter#replaceFieldRead/Write() on field shadowing


git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@323 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
tags/rel_3_17_1_ga
chiba 17 yıl önce
ebeveyn
işleme
baa647c760

+ 6
- 0
Readme.html Dosyayı Görüntüle



<h2>Changes</h2> <h2>Changes</h2>


<p>-version 3.4
<ul>
<li>A bug in CodeConverter#replaceFieldRead() and CodeConverter#replaceFieldWrite()
was fixed. <a href="http://jira.jboss.com/jira/browse/JBAOP-284">JBAOP-284</a>.
</ul>

<p>-version 3.3 on August 17, 2006 <p>-version 3.3 on August 17, 2006
<ul> <ul>
<li>CtClass#toClass() and ClassPool#toClass() were modified to accept a <li>CtClass#toClass() and ClassPool#toClass() were modified to accept a

+ 13
- 1
src/main/javassist/convert/TransformReadField.java Dosyayı Görüntüle



try { try {
CtClass c = pool.get(cp.getFieldrefClassName(index)); 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); return cp.getFieldrefType(index);
} }
catch (NotFoundException e) {} catch (NotFoundException e) {}
return null; 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, public int transform(CtClass tclazz, int pos, CodeIterator iterator,
ConstPool cp) throws BadBytecode ConstPool cp) throws BadBytecode
{ {

Loading…
İptal
Kaydet