Author: toad
Date: 2006-07-26 20:06:51 +0000 (Wed, 26 Jul 2006)
New Revision: 9781
Modified:
trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
trunk/freenet/src/freenet/node/Version.java
Log:
908: Fix nasty NPE in splitfile inserts.
Modified: trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2006-07-26 19:24:44 UTC (rev 9780)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2006-07-26 20:06:51 UTC (rev 9781)
@@ -345,6 +345,18 @@
// Because of the counting.
encoded = true;
parent.encodedSegment(this);
+ synchronized(this) {
+ for(int i=0;i<dataBlockInserters.length;i++) {
+ if(dataBlockInserters[i] == null &&
dataBlocks[i] != null) {
+ try {
+
parent.ctx.persistentBucketFactory.freeBucket(dataBlocks[i]);
+ } catch (IOException e) {
+ Logger.error(this,
"Could not free "+dataBlocks[i]+" : "+e, e);
+ }
+ dataBlocks[i] = null;
+ }
+ }
+ }
} catch (IOException e) {
InserterException ex =
new
InserterException(InserterException.BUCKET_ERROR, e, null);
@@ -451,12 +463,14 @@
return true;
}
dataBlockInserters[x] = null;
- try {
-
parent.ctx.persistentBucketFactory.freeBucket(dataBlocks[x]);
- } catch (IOException e) {
- Logger.error(this, "Could not free
"+dataBlocks[x]+" : "+e, e);
+ if(encoded) {
+ try {
+
parent.ctx.persistentBucketFactory.freeBucket(dataBlocks[x]);
+ } catch (IOException e) {
+ Logger.error(this, "Could not free
"+dataBlocks[x]+" : "+e, e);
+ }
+ dataBlocks[x] = null;
}
- dataBlocks[x] = null;
}
blocksCompleted++;
if(blocksCompleted != dataBlockInserters.length +
checkBlockInserters.length) return true;
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-26 19:24:44 UTC (rev
9780)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-26 20:06:51 UTC (rev
9781)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 907;
+ private static final int buildNumber = 908;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 870;