A file descriptor is removed from an epoll descriptor when it is closed;
trying to remove it later harmlessly returns ENOENT. This handles that case.

2006-09-20  Casey Marshall  <[EMAIL PROTECTED]>

        * native/jni/java-nio/gnu_java_nio_EpollSelectorImpl.c
        (Java_gnu_java_nio_EpollSelectorImpl_epoll_1delete): ignore
        ENOENT.

Committed.
### Eclipse Workspace Patch 1.0
#P classpath
Index: native/jni/java-nio/gnu_java_nio_EpollSelectorImpl.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/java-nio/gnu_java_nio_EpollSelectorImpl.c,v
retrieving revision 1.1
diff -u -r1.1 gnu_java_nio_EpollSelectorImpl.c
--- native/jni/java-nio/gnu_java_nio_EpollSelectorImpl.c        20 Sep 2006 
21:39:41 -0000      1.1
+++ native/jni/java-nio/gnu_java_nio_EpollSelectorImpl.c        20 Sep 2006 
22:21:33 -0000
@@ -246,6 +246,8 @@
       if (ENOSYS == errno)
         JCL_ThrowException (env, "java/lang/InternalError",
                             strerror (errno));
+      else if (ENOENT == errno)
+        return; /* fd is closed; it's already removed. */
       else
         JCL_ThrowException (env, IO_EXCEPTION, strerror (errno));
     }

Reply via email to