From 54b3154ddc53e1511ec1bfc829f4bcccd35368f6 Mon Sep 17 00:00:00 2001 From: Andreas Perhab Date: Fri, 22 Mar 2013 13:08:01 +0100 Subject: [PATCH 1/2] unwrap the recursion when removing orphan references. this caused a stack overflow exception if a thew thousand references where empty --- .../java/net/engio/mbassy/common/ConcurrentSet.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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(); From acc59eb8c324b94acad6251e026abd37b01b94b5 Mon Sep 17 00:00:00 2001 From: Andreas Perhab Date: Fri, 22 Mar 2013 13:19:44 +0100 Subject: [PATCH 2/2] added settings files to gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) 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