Author: toad
Date: 2008-08-27 18:53:52 +0000 (Wed, 27 Aug 2008)
New Revision: 22195

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
Log:
Deactivation


Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-08-27 16:09:08 UTC (rev 22194)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-08-27 18:53:52 UTC (rev 22195)
@@ -266,6 +266,7 @@
                        if(persistent) {
                                container.set(segments[0]);
                                segments[0].deactivateKeys(container);
+                               container.deactivate(segments[0], 1);
                        }
                } else {
                        int dataBlocksPtr = 0;
@@ -280,8 +281,6 @@
                                        System.arraycopy(splitfileDataBlocks, 
dataBlocksPtr, dataBlocks, 0, copyDataBlocks);
                                if(copyCheckBlocks > 0)
                                        System.arraycopy(splitfileCheckBlocks, 
checkBlocksPtr, checkBlocks, 0, copyCheckBlocks);
-                               dataBlocksPtr += copyDataBlocks;
-                               checkBlocksPtr += copyCheckBlocks;
                                segments[i] = new 
SplitFileFetcherSegment(splitfileType, dataBlocks, checkBlocks, this, 
archiveContext, 
                                                fetchContext, maxTempLength, 
recursionLevel+1, parent, i);
                                for(int j=0;j<dataBlocks.length;j++)
@@ -291,7 +290,14 @@
                                if(persistent) {
                                        container.set(segments[i]);
                                        segments[i].deactivateKeys(container);
+                                       container.deactivate(segments[i], 1);
+                                       for(int 
x=dataBlocksPtr;x<dataBlocksPtr+copyDataBlocks;x++)
+                                               splitfileDataBlocks[x] = null;
+                                       for(int 
x=checkBlocksPtr;x<checkBlocksPtr+copyCheckBlocks;x++)
+                                               splitfileCheckBlocks[x] = null;
                                }
+                               dataBlocksPtr += copyDataBlocks;
+                               checkBlocksPtr += copyCheckBlocks;
                        }
                        if(dataBlocksPtr != splitfileDataBlocks.length)
                                throw new 
FetchException(FetchException.INVALID_METADATA, "Unable to allocate all data 
blocks to segments - buggy or malicious inserter");


Reply via email to