summaryrefslogtreecommitdiffstats
path: root/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/nio/channels/spi/AbstractSelectableChannel.java')
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectableChannel.java12
1 files changed, 9 insertions, 3 deletions
diff --git a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
index 76c6c2b899f..0a872bc7bc8 100644
--- a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
+++ b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
@@ -48,7 +48,6 @@ import java.util.ListIterator;
public abstract class AbstractSelectableChannel extends SelectableChannel
{
- private int registered;
private boolean blocking = true;
private Object LOCK = new Object();
private SelectorProvider provider;
@@ -135,9 +134,15 @@ public abstract class AbstractSelectableChannel extends SelectableChannel
*/
public final SelectionKey keyFor(Selector selector)
{
+ if (! isOpen())
+ return null;
+
try
{
- return register (selector, 0, null);
+ synchronized(blockingLock())
+ {
+ return locate (selector);
+ }
}
catch (Exception e)
{
@@ -196,7 +201,8 @@ public abstract class AbstractSelectableChannel extends SelectableChannel
if (key != null)
{
- key.attach (att);
+ if (att != null)
+ key.attach (att);
}
else
{
OpenPOWER on IntegriCloud