about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-05-19 23:01:09 +0000
committerEric Wong <normalperson@yhbt.net>2011-05-19 23:01:09 +0000
commitef934630bcc0af50fec6283b8af767e5d2fc664d (patch)
treeb88c13b9e34cade20bb4cf5f3a5b4ae7618a26db
parentff020c21f772debbb1a1b247b11325c747288fcb (diff)
downloadsleepy_penguin-ef934630bcc0af50fec6283b8af767e5d2fc664d.tar.gz
It's too dangerous in the general case to support, and
we doubt people ever used it.
-rw-r--r--ext/sleepy_penguin/epoll.c15
-rw-r--r--ext/sleepy_penguin/util.c6
-rw-r--r--test/test_epoll_optimizations.rb12
3 files changed, 12 insertions, 21 deletions
diff --git a/ext/sleepy_penguin/epoll.c b/ext/sleepy_penguin/epoll.c
index 225e77e..0aa2b00 100644
--- a/ext/sleepy_penguin/epoll.c
+++ b/ext/sleepy_penguin/epoll.c
@@ -642,6 +642,15 @@ static VALUE init_copy(VALUE copy, VALUE orig)
         return copy;
 }
 
+/* occasionally it's still useful to lookup aliased IO objects
+ * based on for debugging */
+static int my_fileno(VALUE obj)
+{
+        if (T_FIXNUM == TYPE(obj))
+                return FIX2INT(obj);
+        return rb_sp_fileno(obj);
+}
+
 /*
  * call-seq:
  *        epoll.io_for(io)        -> object
@@ -654,7 +663,7 @@ static VALUE io_for(VALUE self, VALUE obj)
 {
         struct rb_epoll *ep = ep_get(self);
 
-        return rb_ary_entry(ep->marks, rb_sp_fileno(obj));
+        return rb_ary_entry(ep->marks, my_fileno(obj));
 }
 
 /*
@@ -668,7 +677,7 @@ static VALUE flags_for(VALUE self, VALUE obj)
 {
         struct rb_epoll *ep = ep_get(self);
 
-        return rb_ary_entry(ep->flag_cache, rb_sp_fileno(obj));
+        return rb_ary_entry(ep->flag_cache, my_fileno(obj));
 }
 
 /*
@@ -683,7 +692,7 @@ static VALUE include_p(VALUE self, VALUE obj)
 {
         struct rb_epoll *ep = ep_get(self);
 
-        return NIL_P(rb_ary_entry(ep->marks, rb_sp_fileno(obj))) ? Qfalse : Qtrue;
+        return NIL_P(rb_ary_entry(ep->marks, my_fileno(obj))) ? Qfalse : Qtrue;
 }
 
 /*
diff --git a/ext/sleepy_penguin/util.c b/ext/sleepy_penguin/util.c
index ca430c5..10fd404 100644
--- a/ext/sleepy_penguin/util.c
+++ b/ext/sleepy_penguin/util.c
@@ -110,12 +110,6 @@ int rb_sp_fileno(VALUE io)
 {
         rb_io_t *fptr;
 
-        switch (TYPE(io)) {
-        case T_FIXNUM: return FIX2INT(io);
-        case T_FILE:
-                GetOpenFile(io, fptr);
-                return FPTR_TO_FD(fptr);
-        }
         io = rb_convert_type(io, T_FILE, "IO", "to_io");
         GetOpenFile(io, fptr);
         return FPTR_TO_FD(fptr);
diff --git a/test/test_epoll_optimizations.rb b/test/test_epoll_optimizations.rb
index 88d6d22..0c344b9 100644
--- a/test/test_epoll_optimizations.rb
+++ b/test/test_epoll_optimizations.rb
@@ -98,18 +98,6 @@ class TestEpollOptimizations < Test::Unit::TestCase
     assert_equal 0, lines.grep(/^epoll_ctl/).size
   end
 
-  def test_delete_closed_fileno
-    fileno = @wr.fileno
-    @ep.add(fileno, Epoll::OUT)
-    @wr.close
-    rv = nil
-    io, err = Strace.me { rv = @ep.delete(fileno) }
-    lines = io.readlines; io.close
-    assert_nil err
-    assert_equal fileno, rv
-    assert_equal 0, lines.grep(/^epoll_ctl/).size
-  end
-
   def test_delete_aliased_a
     tmp = IO.for_fd @wr.fileno
     IO_PURGATORY << tmp