Update of /cvsroot/jython/jython/org/python/core
In directory usw-pr-cvs1:/tmp/cvs-serv14302/org/python/core
Modified Files:
InternalTables2.java
Log Message:
solve b.actionPerformed= lambda e,me=b: None leak.
Index: InternalTables2.java
===================================================================
RCS file: /cvsroot/jython/jython/org/python/core/InternalTables2.java,v
retrieving revision 2.2
retrieving revision 2.3
diff -C2 -r2.2 -r2.3
*** InternalTables2.java 2000/12/16 16:43:33 2.2
--- InternalTables2.java 2001/01/23 02:07:22 2.3
***************
*** 4,7 ****
--- 4,8 ----
import java.util.*;
+ import java.lang.ref.*;
public class InternalTables2 extends InternalTables1 {
***************
*** 20,24 ****
HashMap ads = (HashMap)adapters.get(o);
if (ads == null) return null;
! return ads.get(evc);
}
--- 21,27 ----
HashMap ads = (HashMap)adapters.get(o);
if (ads == null) return null;
! WeakReference adw = (WeakReference) ads.get(evc);
! if (adw == null) return null;
! return adw.get();
}
***************
*** 29,33 ****
adapters.put(o,ads);
}
! ads.put(evc,ad);
}
--- 32,36 ----
adapters.put(o,ads);
}
! ads.put(evc,new WeakReference(ad));
}
***************
*** 63,76 ****
public Object _next() {
if (iterType == ADAPTER) {
! if (iter==null || !iter.hasNext() ) {
! if (grand.hasNext()) {
! cur = grand.next();
! iter = ((HashMap)cur).values().iterator();
! } else iter = null;
! }
! if (iter != null) {
! return iter.next().getClass().getInterfaces()[0];
! }
! grand = null;
}
else if (iter.hasNext()) {
--- 66,85 ----
public Object _next() {
if (iterType == ADAPTER) {
! for(;;) {
! if (iter==null || !iter.hasNext() ) {
! if (grand.hasNext()) {
! cur = grand.next();
! iter = ((HashMap)cur).values().iterator();
! } else iter = null;
! }
! if (iter != null) {
! WeakReference adw = (WeakReference)iter.next();
! Object ad = adw.get();
! if (ad != null) return ad.getClass().getInterfaces()[0];
! else continue;
! }
! grand = null;
! break;
! }
}
else if (iter.hasNext()) {
|