Author: toad
Date: 2009-02-13 21:28:52 +0000 (Fri, 13 Feb 2009)
New Revision: 25629

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Don't allow the last check block to be too short


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2009-02-13 15:38:57 UTC (rev 25628)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2009-02-13 21:28:52 UTC (rev 25629)
@@ -262,25 +262,25 @@
                                container.store(dataBuckets[blockNo]);
                        }
                } else if(blockNo < checkKeys.length + dataKeys.length) {
-                       blockNo -= dataKeys.length;
-                       if(checkKeys[blockNo] == null) {
+                       int checkNo = blockNo - dataKeys.length;
+                       if(checkKeys[checkNo] == null) {
                                if(!startedDecode) {
                                        if(logMINOR)
-                                               Logger.minor(this, "Check block 
already finished: "+blockNo);
+                                               Logger.minor(this, "Check block 
already finished: "+checkNo);
                                }
                                data.free();
                                return -1;
                        }
-                       checkRetries[blockNo] = 0; // Prevent healing of 
successfully fetched block.
+                       checkRetries[checkNo] = 0; // Prevent healing of 
successfully fetched block.
                        if(persistent)
-                               checkKeys[blockNo].removeFrom(container);
-                       checkKeys[blockNo] = null;
+                               checkKeys[checkNo].removeFrom(container);
+                       checkKeys[checkNo] = null;
                        if(persistent)
-                               container.activate(checkBuckets[blockNo], 1);
-                       checkBuckets[blockNo].setData(data);
+                               container.activate(checkBuckets[checkNo], 1);
+                       checkBuckets[checkNo].setData(data);
                        if(persistent) {
                                data.storeTo(container);
-                               container.store(checkBuckets[blockNo]);
+                               container.store(checkBuckets[checkNo]);
                        }
                } else
                        Logger.error(this, "Unrecognized block number: 
"+blockNo, new Exception("error"));

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

Reply via email to