Hi,

Committed. The spec says that implCloseChannel should cancel all keys
associated with the channel.

Regards,
Jeroen

2006-09-24  Jeroen Frijters  <[EMAIL PROTECTED]>

        * java/nio/channels/spi/AbstractSelectableChannel.java
        (implCloseChannel): Cancel all keys after closing the channel.
Index: java/nio/channels/spi/AbstractSelectableChannel.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/java/nio/channels/spi/AbstractSelectableChannel.java,v
retrieving revision 1.19
diff -u -r1.19 AbstractSelectableChannel.java
--- java/nio/channels/spi/AbstractSelectableChannel.java        29 Oct 2005 
17:05:44 -0000      1.19
+++ java/nio/channels/spi/AbstractSelectableChannel.java        24 Sep 2006 
11:26:39 -0000
@@ -44,6 +44,7 @@
 import java.nio.channels.SelectionKey;
 import java.nio.channels.Selector;
 import java.nio.channels.IllegalBlockingModeException;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.ListIterator;
 
@@ -106,7 +107,15 @@
    */
   protected final void implCloseChannel() throws IOException
   {
-    implCloseSelectableChannel();
+    try
+      {
+        implCloseSelectableChannel();
+      }
+    finally
+      {
+        for (Iterator it = keys.iterator(); it.hasNext(); )
+          ((SelectionKey) it.next()).cancel();
+      }
   }
 
   /**

Reply via email to