Author: toad
Date: 2008-07-23 13:11:02 +0000 (Wed, 23 Jul 2008)
New Revision: 21342
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
Clone keys when handing to parts of the code that aren't persistent.
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-07-23 13:06:37 UTC (rev 21341)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-07-23 13:11:02 UTC (rev 21342)
@@ -337,6 +337,8 @@
final RegisterMe regme = reg;
// Check the datastore before proceding.
final Key[] keys =
listener.listKeys(selectorContainer);
+ for(int i=0;i<keys.length;i++)
+ keys[i] = keys[i].cloneKey();
final boolean dontCache =
listener.dontCache(selectorContainer);
datastoreCheckerExecutor.execute(new Runnable()
{
@@ -866,7 +868,7 @@
container.activate(key, 5);
short priority = schedCore.getKeyPrio(key,
oldPrio, container);
if(priority >= oldPrio) return; // already on
list at >= priority
- offeredKeys[priority].queueKey(key);
+ offeredKeys[priority].queueKey(key.cloneKey());
starter.wakeUp();
container.deactivate(key, 5);
}