diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-05-19 23:01:09 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-05-19 23:01:09 +0000 |
commit | ef934630bcc0af50fec6283b8af767e5d2fc664d (patch) | |
tree | b88c13b9e34cade20bb4cf5f3a5b4ae7618a26db | |
parent | ff020c21f772debbb1a1b247b11325c747288fcb (diff) | |
download | sleepy_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.c | 15 | ||||
-rw-r--r-- | ext/sleepy_penguin/util.c | 6 | ||||
-rw-r--r-- | test/test_epoll_optimizations.rb | 12 |
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 |