Author: toad Date: 2009-03-11 16:32:37 +0000 (Wed, 11 Mar 2009) New Revision: 25987
Modified:
branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
Log:
Free when set finished, not later (don't double free or forget to free). If
freeData is false, nullData() to prevent it from being removed.
Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
2009-03-11 16:26:59 UTC (rev 25986)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
2009-03-11 16:32:37 UTC (rev 25987)
@@ -567,11 +567,6 @@
ClientPutState toRemove = null;
synchronized(this) {
if(finished){
- if(freeData) {
- block.free(container);
- if(persistent)
- container.store(this);
- }
return;
}
if(state == sfi) {
@@ -595,6 +590,13 @@
if(splitInsertSuccess && metaInsertSuccess) {
if(logMINOR) Logger.minor(this, "Both
succeeded for "+this);
finished = true;
+ if(freeData) {
+ block.free(container);
+ if(persistent)
+ container.store(this);
+ } else {
+ block.nullData();
+ }
}
}
if(toRemove != null && persistent)
@@ -629,8 +631,6 @@
Logger.error(this, "onFailure() on
unknown state "+state+" on "+this);
}
if(finished){
- if(freeData)
- block.free(container);
toFail = false; // Already failed
}
}
@@ -742,9 +742,12 @@
container.activate(block, 2);
synchronized(this) {
if(finished){
+ return;
+ } else {
if(freeData)
block.free(container);
- return;
+ else
+ block.nullData();
}
finished = true;
oldSFI = sfi;
@@ -809,6 +812,8 @@
if(persistent)
container.activate(block, 2);
block.free(container);
+ } else {
+ block.nullData();
}
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
