Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/ComputedSet.java')
-rw-r--r--bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/ComputedSet.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/ComputedSet.java b/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/ComputedSet.java
index 827dc6558ca..fcdae4046aa 100644
--- a/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/ComputedSet.java
+++ b/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/ComputedSet.java
@@ -8,6 +8,7 @@
* Contributors:
* Matthew Hall - initial API and implementation (bug 237703)
* Matthew Hall - bug 274081
+ * Abel Hegedus - bug 414297
*******************************************************************************/
package org.eclipse.core.databinding.observable.set;
@@ -227,12 +228,15 @@ public abstract class ComputedSet extends AbstractObservableSet {
if (!dirty) {
dirty = true;
+ // copy the old set
+ // bug 414297: moved before makeStale(), as cachedSet may be
+ // overwritten
+ // in makeStale() if a listener calls isStale()
+ final Set oldSet = new HashSet(cachedSet);
makeStale();
stopListening();
- // copy the old set
- final Set oldSet = new HashSet(cachedSet);
// Fire the "dirty" event. This implementation recomputes the new
// set lazily.
fireSetChange(new SetDiff() {

Back to the top