diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | io.c | 2 | ||||
-rw-r--r-- | test/ruby/test_io.rb | 6 |
3 files changed, 10 insertions, 5 deletions
@@ -1,3 +1,10 @@ +Sat Dec 12 07:44:38 2015 Eric Wong <e@80x24.org> + + * io.c (do_io_advise): do not raise on ENOSYS + * test/ruby/test_io.rb (test_advise): do not skip on Errno::ENOSYS + (test_advise_pipe): ditto + [ruby-core:72066] [Feature #11806] + Sat Dec 12 07:05:29 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> * enc/windows_1252.c: separate from ISO-8859-1 to fix 0x80..0x9e @@ -8586,7 +8586,7 @@ do_io_advise(rb_io_t *fptr, VALUE advice, off_t offset, off_t len) ias.len = len; rv = (int)rb_thread_io_blocking_region(io_advise_internal, &ias, fptr->fd); - if (rv) { + if (rv && rv != ENOSYS) { /* posix_fadvise(2) doesn't set errno. On success it returns 0; otherwise it returns the error code. */ VALUE message = rb_sprintf("%"PRIsVALUE" " diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index a237fa3b87..ad9e4fa08f 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -2565,8 +2565,6 @@ End ret = assert_nothing_raised(lambda { os_and_fs(tf.path) }) { begin t.advise(adv, offset, len) - rescue Errno::ENOSYS - skip rescue Errno::EINVAL => e if /linux/ =~ RUBY_PLATFORM && (Etc.uname[:release].split('.').map(&:to_i) <=> [3,6]) < 0 next # [ruby-core:65355] tmpfs is not supported @@ -3007,8 +3005,8 @@ End # we don't know if other platforms have a real posix_fadvise() with_pipe do |r,w| # Linux 2.6.15 and earlier returned EINVAL instead of ESPIPE - assert_raise(Errno::ESPIPE, Errno::EINVAL, Errno::ENOSYS) { r.advise(:willneed) } - assert_raise(Errno::ESPIPE, Errno::EINVAL, Errno::ENOSYS) { w.advise(:willneed) } + assert_raise(Errno::ESPIPE, Errno::EINVAL) { r.advise(:willneed) } + assert_raise(Errno::ESPIPE, Errno::EINVAL) { w.advise(:willneed) } end end if /linux/ =~ RUBY_PLATFORM |