Author: toad
Date: 2008-12-17 15:47:21 +0000 (Wed, 17 Dec 2008)
New Revision: 24447

Modified:
   branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
Log:
Fix NPE, remove segments on freeing.


Modified: 
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java    
    2008-12-17 15:38:29 UTC (rev 24446)
+++ 
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java    
    2008-12-17 15:47:21 UTC (rev 24447)
@@ -60,13 +60,23 @@
        }
 
        public void free() {
-               SegmentedChainBucketSegment[] segs;
-               synchronized(this) {
-                       segs = segments.toArray(new 
SegmentedChainBucketSegment[segments.size()]);
-                       segments.clear();
-               }
-               for(SegmentedChainBucketSegment segment : segs)
-                       segment.free();
+               dbJobRunner.queue(new DBJob() {
+
+                       public void run(ObjectContainer container, 
ClientContext context) {
+                               SegmentedChainBucketSegment[] segs;
+                               synchronized(this) {
+                                       segs = segments.toArray(new 
SegmentedChainBucketSegment[segments.size()]);
+                                       segments.clear();
+                               }
+                               for(SegmentedChainBucketSegment segment : segs) 
{
+                                       container.activate(segment, 1);
+                                       segment.activateBuckets(container);
+                                       segment.free();
+                                       segment.removeFrom(container);
+                               }
+                       }
+                       
+               }, NativeThread.HIGH_PRIORITY, false);
        }
 
        public InputStream getInputStream() throws IOException {

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

Reply via email to