Author: toad
Date: 2007-04-24 11:40:56 +0000 (Tue, 24 Apr 2007)
New Revision: 12915

Modified:
   trunk/freenet/src/freenet/support/SimpleFieldSet.java
Log:
synchronization

Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java
===================================================================
--- trunk/freenet/src/freenet/support/SimpleFieldSet.java       2007-04-24 
11:39:40 UTC (rev 12914)
+++ trunk/freenet/src/freenet/support/SimpleFieldSet.java       2007-04-24 
11:40:56 UTC (rev 12915)
@@ -437,24 +437,26 @@
        String prefix;

        public KeyIterator(String prefix) {
-               valuesIterator = values.keySet().iterator();
-               if(subsets != null)
-                       subsetIterator = subsets.keySet().iterator();
-               else
-                       subsetIterator = null;
-               while(true) {
-                       if(valuesIterator.hasNext()) break;
-                       if(!subsetIterator.hasNext()) break;
-                       String name = (String) subsetIterator.next();
-                       if(name == null) continue;
-                       SimpleFieldSet fs = (SimpleFieldSet) subsets.get(name);
-                       if(fs == null) continue;
-                       String newPrefix = prefix + name + MULTI_LEVEL_CHAR;
-                       subIterator = fs.keyIterator(newPrefix);
-                       if(subIterator.hasNext()) break;
-                       subIterator = null;
+               synchronized(SimpleFieldSet.this) {
+                       valuesIterator = values.keySet().iterator();
+                       if(subsets != null)
+                               subsetIterator = subsets.keySet().iterator();
+                       else
+                               subsetIterator = null;
+                       while(true) {
+                               if(valuesIterator.hasNext()) break;
+                               if(!subsetIterator.hasNext()) break;
+                               String name = (String) subsetIterator.next();
+                               if(name == null) continue;
+                               SimpleFieldSet fs = (SimpleFieldSet) 
subsets.get(name);
+                               if(fs == null) continue;
+                               String newPrefix = prefix + name + 
MULTI_LEVEL_CHAR;
+                               subIterator = fs.keyIterator(newPrefix);
+                               if(subIterator.hasNext()) break;
+                               subIterator = null;
+                       }
+                       this.prefix = prefix;
                }
-               this.prefix = prefix;
        }

                public boolean hasNext() {


Reply via email to