aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--io.c2
-rw-r--r--test/ruby/test_io.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/io.c b/io.c
index 0845c823c1..a8ed4f0433 100644
--- a/io.c
+++ b/io.c
@@ -10420,7 +10420,7 @@ rb_io_s_binread(int argc, VALUE *argv, VALUE io)
rb_scan_args(argc, argv, "12", NULL, NULL, &offset);
FilePathValue(argv[0]);
convconfig.enc = rb_ascii8bit_encoding();
- arg.io = rb_file_open_generic(io_alloc(io), argv[0], oflags, fmode, &convconfig, 0);
+ arg.io = rb_io_open_generic(io, argv[0], oflags, fmode, &convconfig, 0);
if (NIL_P(arg.io)) return Qnil;
arg.argv = argv+1;
arg.argc = (argc > 1) ? 1 : 0;
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb
index 89c68b6cb2..4f6027d8c9 100644
--- a/test/ruby/test_io.rb
+++ b/test/ruby/test_io.rb
@@ -2188,9 +2188,15 @@ class TestIO < Test::Unit::TestCase
assert_warn(/invoke external command/) do
File.read("|#{EnvUtil.rubybin} -e puts")
end
+ assert_warn(/invoke external command/) do
+ File.binread("|#{EnvUtil.rubybin} -e puts")
+ end
assert_raise_with_message(ArgumentError, /invoke external command/) do
Class.new(IO).read("|#{EnvUtil.rubybin} -e puts")
end
+ assert_raise_with_message(ArgumentError, /invoke external command/) do
+ Class.new(IO).binread("|#{EnvUtil.rubybin} -e puts")
+ end
end
def test_reopen