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);
        }


Reply via email to