diff options
author | sorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-04-09 14:28:06 +0000 |
---|---|---|
committer | sorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-04-09 14:28:06 +0000 |
commit | 4e817b39b42fb1089ed0d4eb5f8c4d3e0e695960 (patch) | |
tree | eb03ce997a98639257308ecf23237fd70db666ad | |
parent | 0a69f2e39de67d3d9887673b5030adcc5f2d0b81 (diff) | |
download | ruby-4e817b39b42fb1089ed0d4eb5f8c4d3e0e695960.tar.gz |
* 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
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | ext/stringio/stringio.c | 6 | ||||
-rw-r--r-- | test/stringio/test_stringio.rb | 3 |
3 files changed, 14 insertions, 4 deletions
@@ -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> * ext/stringio/stringio.c (strio_each, strio_readlines): diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 609355a51b..1bb5e0f573 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -1067,13 +1067,13 @@ strio_each(int argc, VALUE *argv, VALUE self) struct StringIO *ptr = StringIO(self); VALUE line; + RETURN_ENUMERATOR(self, argc, argv); + if(argc > 0 && TYPE(argv[argc-1]) == T_FIXNUM && 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)))) { rb_yield(line); } diff --git a/test/stringio/test_stringio.rb b/test/stringio/test_stringio.rb index 8bf6c595a0..0258218755 100644 --- a/test/stringio/test_stringio.rb +++ b/test/stringio/test_stringio.rb @@ -488,6 +488,7 @@ class TestStringIO < Test::Unit::TestCase end 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 |