diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | io.c | 4 | ||||
-rw-r--r-- | test/ruby/test_argf.rb | 11 |
3 files changed, 20 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Wed Nov 25 10:55:21 2015 Shugo Maeda <shugo@ruby-lang.org> + + * io.c (argf_getpartial): should not resize str if the second + argument is not given. + [ruby-core:71668] [Bug #11738] + Tue Nov 24 23:56:25 2015 Naohisa Goto <ngotogenome@gmail.com> * configure.in: On Solaris, it is safe to define _LARGEFILE_SOURCE @@ -11247,7 +11247,9 @@ argf_getpartial(int argc, VALUE *argv, VALUE argf, VALUE opts, int nonblock) } if (!next_argv()) { - rb_str_resize(str, 0); + if (!NIL_P(str)) { + rb_str_resize(str, 0); + } rb_eof_error(); } if (ARGF_GENERIC_INPUT_P()) { diff --git a/test/ruby/test_argf.rb b/test/ruby/test_argf.rb index cb27b9c64e..e40b038967 100644 --- a/test/ruby/test_argf.rb +++ b/test/ruby/test_argf.rb @@ -510,6 +510,17 @@ class TestArgf < Test::Unit::TestCase end end + def test_readpartial_eof_twice + ruby('-W1', '-e', <<-SRC, @t1.path) do |f| + $stderr = $stdout + print ARGF.readpartial(256) + ARGF.readpartial(256) rescue p($!.class) + ARGF.readpartial(256) rescue p($!.class) + SRC + assert_equal("1\n2\nEOFError\nEOFError\n", f.read) + end + end + def test_getc ruby('-e', <<-SRC, @t1.path, @t2.path, @t3.path) do |f| s = "" |