Author: toad
Date: 2008-06-20 11:27:47 +0000 (Fri, 20 Jun 2008)
New Revision: 20515
Modified:
branches/db4o/freenet/src/freenet/client/async/ManifestElement.java
branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java
Log:
Fix NPE: don't call removeFrom(container) unless PERSIST_FOREVER.
Also some paranoia.
Modified: branches/db4o/freenet/src/freenet/client/async/ManifestElement.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ManifestElement.java
2008-06-20 00:56:30 UTC (rev 20514)
+++ branches/db4o/freenet/src/freenet/client/async/ManifestElement.java
2008-06-20 11:27:47 UTC (rev 20515)
@@ -78,10 +78,11 @@
return false;
}
- public void freeData(ObjectContainer container) {
+ public void freeData(ObjectContainer container, boolean persistForever)
{
if(data != null) {
data.free();
- data.removeFrom(container);
+ if(persistForever)
+ data.removeFrom(container);
data = null;
}
}
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java 2008-06-20
00:56:30 UTC (rev 20514)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java 2008-06-20
11:27:47 UTC (rev 20515)
@@ -392,7 +392,8 @@
}
if(d == null) return;
d.free();
- d.removeFrom(container);
+ if(persistenceType == PERSIST_FOREVER)
+ d.removeFrom(container);
}
public SimpleFieldSet getFieldSet() {
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
2008-06-20 00:56:30 UTC (rev 20514)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
2008-06-20 11:27:47 UTC (rev 20515)
@@ -256,7 +256,7 @@
freeData((HashMap)o, container);
else {
ManifestElement e = (ManifestElement) o;
- e.freeData(container);
+ e.freeData(container, persistenceType ==
PERSIST_FOREVER);
}
}
}
Modified: branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java
2008-06-20 00:56:30 UTC (rev 20514)
+++ branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java
2008-06-20 11:27:47 UTC (rev 20515)
@@ -25,6 +25,7 @@
public DelayedFreeBucket(PersistentTempBucketFactory factory,
PaddedEphemerallyEncryptedBucket bucket) {
this.factory = factory;
this.bucket = bucket;
+ if(bucket == null) throw new NullPointerException();
}
public DelayedFreeBucket(SimpleFieldSet fs, RandomSource random,
PersistentFileTracker f) throws CannotCreateFromFieldSetException {