[前][次][番号順一覧][スレッド一覧]

ruby-changes:19213

From: sorah <ko1@a...>
Date: Sat, 9 Apr 2011 22:02:30 +0900 (JST)
Subject: [ruby-changes:19213] Ruby:r31252 (trunk): * ext/stringio/stringio.c (strio_each, strio_readlines):

sorah	2011-04-09 22:01:23 +0900 (Sat, 09 Apr 2011)

  New Revision: 31252

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31252

  Log:
    * ext/stringio/stringio.c (strio_each, strio_readlines):
      limit must not be zero. Fixes [ruby-dev:43392].
    
    * test/stringio/test_stringio.rb: Add tests for above.

  Modified files:
    trunk/ChangeLog
    trunk/ext/stringio/stringio.c
    trunk/test/stringio/test_stringio.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 31251)
+++ ChangeLog	(revision 31252)
@@ -1,3 +1,10 @@
+Sat Apr  9 21:54:15 2011  Shota Fukumori  <sorah@t...>
+
+	* ext/stringio/stringio.c (strio_each, strio_readlines):
+	  limit must not be zero. Fixes [ruby-dev:43392].
+
+	* test/stringio/test_stringio.rb: Add tests for above.
+
 Sat Apr  9 18:01:36 2011  Tanaka Akira  <akr@f...>
 
 	* include/ruby/util.h: parenthesize macro arguments.
Index: ext/stringio/stringio.c
===================================================================
--- ext/stringio/stringio.c	(revision 31251)
+++ ext/stringio/stringio.c	(revision 31252)
@@ -1067,6 +1067,11 @@
     struct StringIO *ptr = StringIO(self);
     VALUE line;
 
+    if(argc > 0 && TYPE(argv[argc-1]) == T_FIXNUM &&
+       FIX2INT(argv[argc-1]) == 0) {
+	rb_raise(rb_eArgError, "invalid limit: 0 for readlines");
+    }
+
     RETURN_ENUMERATOR(self, argc, argv);
 
     while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) {
@@ -1088,6 +1093,12 @@
 {
     struct StringIO *ptr = StringIO(self);
     VALUE ary = rb_ary_new(), line;
+
+    if(argc > 0 && TYPE(argv[argc-1]) == T_FIXNUM &&
+       FIX2INT(argv[argc-1]) == 0) {
+	rb_raise(rb_eArgError, "invalid limit: 0 for readlines");
+    }
+
     while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) {
 	rb_ary_push(ary, line);
     }
Index: test/stringio/test_stringio.rb
===================================================================
--- test/stringio/test_stringio.rb	(revision 31251)
+++ test/stringio/test_stringio.rb	(revision 31252)
@@ -482,4 +482,12 @@
     assert_raise(RuntimeError, bug) {s.string = "foo"}
     assert_raise(RuntimeError, bug) {s.reopen("")}
   end
+
+  def test_readlines_limit_0
+    assert_raise(ArgumentError, "[ruby-dev:43392]") { StringIO.new.readlines(0) }
+  end
+
+  def test_each_line_limit_0
+    assert_raise(ArgumentError, "[ruby-dev:43392]") { StringIO.new.each_line(0) }
+  end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]