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);
                        }


Reply via email to