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