[freenet-cvs] r13135 - trunk/freenet/src/freenet/support

toad at freenetproject.org toad at freenetproject.org
Thu May 3 21:54:35 UTC 2007


Author: toad
Date: 2007-05-03 21:54:35 +0000 (Thu, 03 May 2007)
New Revision: 13135

Modified:
   trunk/freenet/src/freenet/support/RandomGrabArray.java
Log:
Fix memory leak

Modified: trunk/freenet/src/freenet/support/RandomGrabArray.java
===================================================================
--- trunk/freenet/src/freenet/support/RandomGrabArray.java	2007-05-03 21:49:12 UTC (rev 13134)
+++ trunk/freenet/src/freenet/support/RandomGrabArray.java	2007-05-03 21:54:35 UTC (rev 13135)
@@ -53,7 +53,7 @@
 	}
 	
 	public RandomGrabArrayItem removeRandom() {
-		RandomGrabArrayItem ret;
+		RandomGrabArrayItem ret, oret;
 		synchronized(this) {
 			boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
 			while(true) {
@@ -63,6 +63,7 @@
 				}
 				int i = rand.nextInt(index);
 				ret = reqs[i];
+				oret = ret;
 				if(ret.isCancelled()) ret = null;
 				if(ret != null && !ret.canRemove()) {
 					ret.setParentGrabArray(null);
@@ -70,8 +71,8 @@
 				}
 				reqs[i] = reqs[--index];
 				reqs[index] = null;
-				if(ret != null)
-					contents.remove(ret);
+				if(oret != null)
+					contents.remove(oret);
 				// Shrink array
 				if((index < reqs.length / 4) && (reqs.length > MIN_SIZE)) {
 					// Shrink array




More information about the cvs mailing list