Index: ChangeLog =================================================================== RCS file: /cvsroot/classpath/classpath/ChangeLog,v retrieving revision 1.1717 diff -u -b -B -r1.1717 ChangeLog --- ChangeLog 26 Dec 2003 22:59:15 -0000 1.1717 +++ ChangeLog 26 Dec 2003 23:09:41 -0000 @@ -1,5 +1,13 @@ 2003-12-27 Michael Koch + * java/nio/channels/spi/AbstractSelector.java: + Added import for java.nio.channels.ClosedSelectorException. + (close): Added synchronized to method declaration. + (cancelledKeys): Throw ClosedSelectorException if is closed. + (cancelKey): Synchronize on cancelled key set before key. + +2003-12-27 Michael Koch + * java/util/SimpleTimeZone.java (setStartRule): Reformated documentation. (setEndRule): Reworked documentation. Index: java/nio/channels/spi/AbstractSelector.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/channels/spi/AbstractSelector.java,v retrieving revision 1.7 diff -u -b -B -r1.7 AbstractSelector.java --- java/nio/channels/spi/AbstractSelector.java 12 Oct 2003 16:56:00 -0000 1.7 +++ java/nio/channels/spi/AbstractSelector.java 26 Dec 2003 23:09:41 -0000 @@ -39,6 +39,7 @@ package java.nio.channels.spi; import java.io.IOException; +import java.nio.channels.ClosedSelectorException; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.util.Set; @@ -64,7 +65,7 @@ * * @exception IOException If an error occurs */ - public final void close () throws IOException + public final synchronized void close () throws IOException { if (closed) return; @@ -102,12 +103,18 @@ protected final Set cancelledKeys() { + if (!isOpen()) + throw new ClosedSelectorException(); + return cancelledKeys; } final void cancelKey (AbstractSelectionKey key) { - cancelledKeys.remove (key); + synchronized (cancelledKeys) + { + cancelledKeys.remove(key); + } } /**