Author: toad
Date: 2008-11-27 01:40:06 +0000 (Thu, 27 Nov 2008)
New Revision: 23901
Modified:
trunk/freenet/src/freenet/client/FECCodec.java
Log:
Fix a bucket leak
Modified: trunk/freenet/src/freenet/client/FECCodec.java
===================================================================
--- trunk/freenet/src/freenet/client/FECCodec.java 2008-11-27 01:33:05 UTC
(rev 23900)
+++ trunk/freenet/src/freenet/client/FECCodec.java 2008-11-27 01:40:06 UTC
(rev 23901)
@@ -252,6 +252,8 @@
DataInputStream[] readers = new DataInputStream[k];
OutputStream[] writers = new OutputStream[n - k];
+ Bucket toFree = null;
+
try {
int[] toEncode = new int[n - k];
@@ -272,9 +274,10 @@
if(sz < blockLength) {
if(i != dataBlockStatus.length - 1)
throw new
IllegalArgumentException("All buckets except the last must be the full size");
- if(sz < blockLength)
+ if(sz < blockLength) {
buckets[i] =
BucketTools.pad(buckets[i], blockLength, bf, (int) sz);
- else
+ toFree = buckets[i];
+ } else
throw new
IllegalArgumentException("Too big: " + sz + " bigger than " + blockLength);
}
readers[i] = new
DataInputStream(buckets[i].getInputStream());
@@ -345,6 +348,8 @@
Closer.close(readers[i]);
for(int i = 0; i < n - k; i++)
Closer.close(writers[i]);
+ if(toFree != null)
+ toFree.free();
}
// Set new buckets only after have a successful decode.
for(int i = 0; i < checkBlockStatus.length; i++) {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs