Author: toad
Date: 2009-04-08 22:54:45 +0000 (Wed, 08 Apr 2009)
New Revision: 26665

Modified:
   trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
Log:
Handle cancelling a nearly finished splitfile without NPEing!


Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcher.java        
2009-04-08 21:24:03 UTC (rev 26664)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcher.java        
2009-04-08 22:54:45 UTC (rev 26665)
@@ -568,6 +568,15 @@
                for(int i=0;i<segments.length;i++) {
                        if(logMINOR)
                                Logger.minor(this, "Cancelling segment "+i);
+                       if(segments[i] == null) {
+                               synchronized(this) {
+                                       if(finished) {
+                                               // Not unusual, if some of the 
later segments are already finished when cancel() is called.
+                                               if(logMINOR) Logger.minor(this, 
"Finished mid-cancel on "+this);
+                                               return;
+                                       }
+                               }
+                       }
                        if(persistent)
                                container.activate(segments[i], 1);
                        segments[i].cancel(container, context);

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to