### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/DeltaProcessingState.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessingState.java,v retrieving revision 1.38 diff -u -r1.38 DeltaProcessingState.java --- model/org/eclipse/jdt/internal/core/DeltaProcessingState.java 24 Oct 2006 02:54:49 -0000 1.38 +++ model/org/eclipse/jdt/internal/core/DeltaProcessingState.java 2 Feb 2007 13:53:13 -0000 @@ -98,13 +98,13 @@ */ public synchronized void addElementChangedListener(IElementChangedListener listener, int eventMask) { for (int i = 0; i < this.elementChangedListenerCount; i++){ - if (this.elementChangedListeners[i].equals(listener)){ + if (this.elementChangedListeners[i] == listener){ // only clone the masks, since we could be in the middle of notifications and one listener decide to change // any event mask of another listeners (yet not notified). int cloneLength = this.elementChangedListenerMasks.length; System.arraycopy(this.elementChangedListenerMasks, 0, this.elementChangedListenerMasks = new int[cloneLength], 0, cloneLength); - this.elementChangedListenerMasks[i] = eventMask; // could be different + this.elementChangedListenerMasks[i] |= eventMask; // could be different return; } } @@ -119,9 +119,9 @@ this.elementChangedListenerCount++; } - public void addPreResourceChangedListener(IResourceChangeListener listener, int eventMask) { + public synchronized void addPreResourceChangedListener(IResourceChangeListener listener, int eventMask) { for (int i = 0; i < this.preResourceChangeListenerCount; i++){ - if (this.preResourceChangeListeners[i].equals(listener)) { + if (this.preResourceChangeListeners[i] == listener) { this.preResourceChangeEventMasks[i] |= eventMask; return; } @@ -295,7 +295,7 @@ for (int i = 0; i < this.elementChangedListenerCount; i++){ - if (this.elementChangedListeners[i].equals(listener)){ + if (this.elementChangedListeners[i] == listener){ // need to clone defensively since we might be in the middle of listener notifications (#fire) int length = this.elementChangedListeners.length; @@ -321,11 +321,11 @@ } } - public void removePreResourceChangedListener(IResourceChangeListener listener) { + public synchronized void removePreResourceChangedListener(IResourceChangeListener listener) { for (int i = 0; i < this.preResourceChangeListenerCount; i++){ - if (this.preResourceChangeListeners[i].equals(listener)){ + if (this.preResourceChangeListeners[i] == listener){ // need to clone defensively since we might be in the middle of listener notifications (#fire) int length = this.preResourceChangeListeners.length;