diff --git a/src/main/java/org/boris/expr/util/Graph.java b/src/main/java/org/boris/expr/util/Graph.java index cc7b839..a5fe31a 100644 --- a/src/main/java/org/boris/expr/util/Graph.java +++ b/src/main/java/org/boris/expr/util/Graph.java @@ -56,8 +56,11 @@ public void clearInbounds(Object node) { Set s = (Set) inbounds.get(node); if (s != null) { Iterator i = s.iterator(); + Set remove = new HashSet(); while (i.hasNext()) - remove((Edge) i.next()); + remove.add((Edge) i.next()); + for (Edge edge : remove) + remove(edge); } } diff --git a/src/test/java/org/boris/expr/DependencyEngineTest.java b/src/test/java/org/boris/expr/DependencyEngineTest.java index 36925a6..6fc5ee3 100644 --- a/src/test/java/org/boris/expr/DependencyEngineTest.java +++ b/src/test/java/org/boris/expr/DependencyEngineTest.java @@ -34,6 +34,7 @@ public void testRangeDependencies() throws Exception { e.set("B1", "2"); e.set("A2", "3"); e.set("B2", "4"); + e.set("D4", "=sum(A1:A2)"); e.set("D4", "=sum(A1:B2)"); assertResult(e, "D4", 10); e.set("A1", "10");