IO#readpartial rejects bad args

Sometimes a sleepy developer will want to swap read_nonblock
for readpartial forget to remove "exception: false"

* io.c (io_getpartial): remove unused kwarg from template
* test/ruby/test_io.rb (test_readpartial_bad_args): new
  [Bug #11885]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2015-12-27 06:15:06 +00:00
Родитель 509cfc4c37
Коммит edea151a4b
3 изменённых файлов: 18 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Sun Dec 27 15:14:20 2015 Eric Wong <e@80x24.org>
* io.c (io_getpartial): remove unused kwarg from template
* test/ruby/test_io.rb (test_readpartial_bad_args): new
[Bug #11885]
Sun Dec 27 11:50:53 2015 Kuniaki IGARASHI <igaiga@gmail.com> Sun Dec 27 11:50:53 2015 Kuniaki IGARASHI <igaiga@gmail.com>
* test/ruby/test_string.rb (test_rstrip, test_lstrip): Add tests * test/ruby/test_string.rb (test_rstrip, test_lstrip): Add tests

2
io.c
Просмотреть файл

@ -2506,7 +2506,7 @@ io_getpartial(int argc, VALUE *argv, VALUE io, VALUE opts, int nonblock)
long n, len; long n, len;
struct read_internal_arg arg; struct read_internal_arg arg;
rb_scan_args(argc, argv, "11:", &length, &str, NULL); rb_scan_args(argc, argv, "11", &length, &str);
if ((len = NUM2LONG(length)) < 0) { if ((len = NUM2LONG(length)) < 0) {
rb_raise(rb_eArgError, "negative length %ld given", len); rb_raise(rb_eArgError, "negative length %ld given", len);

Просмотреть файл

@ -3186,6 +3186,17 @@ End
} }
end end
def test_readpartial_bad_args
IO.pipe do |r, w|
w.write '.'
buf = String.new
assert_raise(ArgumentError) { r.readpartial(1, buf, exception: false) }
assert_raise(TypeError) { r.readpartial(1, exception: false) }
assert_equal [[r],[],[]], IO.select([r], nil, nil, 1)
assert_equal '.', r.readpartial(1)
end
end
def test_sysread_unlocktmp_ensure def test_sysread_unlocktmp_ensure
bug8669 = '[ruby-core:56121] [Bug #8669]' bug8669 = '[ruby-core:56121] [Bug #8669]'