diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index e63b7e1576a..def75c9452d 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -231,14 +231,6 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { public boolean handlesEvent(int eventType){ return (eventType & fEventTypes) != 0; } - @Override - public int hashCode() { - return fListener.hashCode(); - } - @Override - public boolean equals(Object obj) { - return fListener.equals(obj); - } } private volatile Map fProviderMap; @@ -2121,7 +2113,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { } public void removeCProjectDescriptionListener(ICProjectDescriptionListener listener) { - fListeners.remove(listener); + for (ListenerDescriptor listenerDescriptor : fListeners) { + if (listenerDescriptor.fListener.equals(listener)) { + fListeners.remove(listenerDescriptor); + break; + } + } } public void notifyListeners(CProjectDescriptionEvent event){