diff --git a/.gitignore b/.gitignore index 82f3461..65b7830 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,8 @@ target/** # the local maven repository # mvn-local-repo/**/* release.properties +/.classpath +/.project +/.settings/org.eclipse.core.resources.prefs +/.settings/org.eclipse.jdt.core.prefs +/.settings/org.eclipse.m2e.core.prefs diff --git a/src/main/java/net/engio/mbassy/common/ConcurrentSet.java b/src/main/java/net/engio/mbassy/common/ConcurrentSet.java index 973adc5..37024a3 100644 --- a/src/main/java/net/engio/mbassy/common/ConcurrentSet.java +++ b/src/main/java/net/engio/mbassy/common/ConcurrentSet.java @@ -88,9 +88,10 @@ public class ConcurrentSet implements Iterable{ public boolean hasNext() { if (current == null) return false; - T value = current.getValue(); - if (value == null) { // auto-removal of orphan references - remove(); + if (current.getValue() == null) { // auto-removal of orphan references + do { + remove(); + } while(current != null && current.getValue() == null); return hasNext(); } else { return true; @@ -101,7 +102,9 @@ public class ConcurrentSet implements Iterable{ if (current == null) return null; T value = current.getValue(); if (value == null) { // auto-removal of orphan references - remove(); + do { + remove(); + } while(current != null && current.getValue() == null); return next(); } else { current = current.next();