summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--ext/stringio/stringio.c6
-rw-r--r--test/stringio/test_stringio.rb3
3 files changed, 14 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index fa82e9f9f2..302039847a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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