Author: toad
Date: 2006-08-16 21:07:38 +0000 (Wed, 16 Aug 2006)
New Revision: 10136
Modified:
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Maybe fix an NPE.
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2006-08-16 21:07:25 UTC (rev 10135)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2006-08-16 21:07:38 UTC (rev 10136)
@@ -251,6 +251,7 @@
queueHeal(dataBuckets[i].getData());
} else {
dataBuckets[i].data.free();
+ dataBuckets[i].data = null;
}
dataBuckets[i] = null;
dataBlockStatus[i] = null;
@@ -321,28 +322,32 @@
if(finished) return;
finished = true;
this.failureException = e;
- }
- for(int i=0;i<dataBlockStatus.length;i++) {
- SingleFileFetcher f = dataBlockStatus[i];
- if(f != null)
- f.cancel();
- MinimalSplitfileBlock b = dataBuckets[i];
- if(b != null) {
- Bucket d = b.getData();
- if(d != null) d.free();
+ if(startedDecode) {
+ Logger.error(this, "Failing with "+e+" but
already started decode", e);
+ return;
}
- dataBuckets[i] = null;
- }
- for(int i=0;i<checkBlockStatus.length;i++) {
- SingleFileFetcher f = checkBlockStatus[i];
- if(f != null)
- f.cancel();
- MinimalSplitfileBlock b = checkBuckets[i];
- if(b != null) {
- Bucket d = b.getData();
- if(d != null) d.free();
+ for(int i=0;i<dataBlockStatus.length;i++) {
+ SingleFileFetcher f = dataBlockStatus[i];
+ if(f != null)
+ f.cancel();
+ MinimalSplitfileBlock b = dataBuckets[i];
+ if(b != null) {
+ Bucket d = b.getData();
+ if(d != null) d.free();
+ }
+ dataBuckets[i] = null;
}
- checkBuckets[i] = null;
+ for(int i=0;i<checkBlockStatus.length;i++) {
+ SingleFileFetcher f = checkBlockStatus[i];
+ if(f != null)
+ f.cancel();
+ MinimalSplitfileBlock b = checkBuckets[i];
+ if(b != null) {
+ Bucket d = b.getData();
+ if(d != null) d.free();
+ }
+ checkBuckets[i] = null;
+ }
}
parentFetcher.segmentFinished(this);
}