Author: toad
Date: 2007-06-28 15:02:56 +0000 (Thu, 28 Jun 2007)
New Revision: 13808

Modified:
   trunk/freenet/src/freenet/support/SimpleFieldSet.java
Log:
Fix KeyIterator.hasNext()

Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java
===================================================================
--- trunk/freenet/src/freenet/support/SimpleFieldSet.java       2007-06-28 
14:30:12 UTC (rev 13807)
+++ trunk/freenet/src/freenet/support/SimpleFieldSet.java       2007-06-28 
15:02:56 UTC (rev 13808)
@@ -496,10 +496,18 @@

                public boolean hasNext() {
                        synchronized(SimpleFieldSet.this) {
-                               if(valuesIterator.hasNext()) return true;
-                               if((subIterator != null) && 
subIterator.hasNext()) return true;
-                               if(subIterator != null) subIterator = null;
-                               return false;
+                               while(true) {
+                                       if(valuesIterator.hasNext()) return 
true;
+                                       if((subIterator != null) && 
subIterator.hasNext()) return true;
+                                       if(subIterator != null) subIterator = 
null;
+                                       if(subsetIterator != null && 
subsetIterator.hasNext()) {
+                                               String key = (String) 
subsetIterator.next();
+                                               SimpleFieldSet fs = 
(SimpleFieldSet) subsets.get(key);
+                                               String newPrefix = prefix + key 
+ MULTI_LEVEL_CHAR;
+                                               subIterator = 
fs.keyIterator(newPrefix);
+                                       } else
+                                               return false;
+                               }
                        }
                }



Reply via email to