1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/stringio/stringio.c (strio_each):

Fix exception message and don't raise immediately if block is not given.
  Fixes [ruby-dev:43394].

* test/stringio/test_stringio.rb (test_each_line_limit_0):
  Fix test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
sorah 2011-04-09 14:28:06 +00:00
parent 0a69f2e39d
commit 4e817b39b4
3 changed files with 14 additions and 4 deletions

View file

@ -1,3 +1,12 @@
Sat Apr 9 23:22:27 2011 Shota Fukumori <sorah@tubusu.net>
* ext/stringio/stringio.c (strio_each):
Fix exception message and don't raise immediately if block is not given.
Fixes [ruby-dev:43394].
* test/stringio/test_stringio.rb (test_each_line_limit_0):
Fix test for above.
Sat Apr 9 21:54:15 2011 Shota Fukumori <sorah@tubusu.net> Sat Apr 9 21:54:15 2011 Shota Fukumori <sorah@tubusu.net>
* ext/stringio/stringio.c (strio_each, strio_readlines): * ext/stringio/stringio.c (strio_each, strio_readlines):

View file

@ -1067,13 +1067,13 @@ strio_each(int argc, VALUE *argv, VALUE self)
struct StringIO *ptr = StringIO(self); struct StringIO *ptr = StringIO(self);
VALUE line; VALUE line;
RETURN_ENUMERATOR(self, argc, argv);
if(argc > 0 && TYPE(argv[argc-1]) == T_FIXNUM && if(argc > 0 && TYPE(argv[argc-1]) == T_FIXNUM &&
FIX2INT(argv[argc-1]) == 0) { FIX2INT(argv[argc-1]) == 0) {
rb_raise(rb_eArgError, "invalid limit: 0 for readlines"); rb_raise(rb_eArgError, "invalid limit: 0 for each_line");
} }
RETURN_ENUMERATOR(self, argc, argv);
while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) { while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) {
rb_yield(line); rb_yield(line);
} }

View file

@ -488,6 +488,7 @@ class TestStringIO < Test::Unit::TestCase
end end
def test_each_line_limit_0 def test_each_line_limit_0
assert_raise(ArgumentError, "[ruby-dev:43392]") { StringIO.new.each_line(0) } assert_raise(ArgumentError, "[ruby-dev:43392]") { StringIO.new.each_line(0){} }
assert_raise(ArgumentError, "[ruby-dev:43392]") { StringIO.new.each_line("a",0){} }
end end
end end