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

ruby-changes:18551

From: yugui <ko1@a...>
Date: Sun, 16 Jan 2011 21:41:19 +0900 (JST)
Subject: [ruby-changes:18551] Ruby:r30574 (ruby_1_9_2): merges r30536 from trunk into ruby_1_9_2.

yugui	2011-01-16 21:35:27 +0900 (Sun, 16 Jan 2011)

  New Revision: 30574

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

  Log:
    merges r30536 from trunk into ruby_1_9_2.
    --
    * io.c (argf_next_argv): go advance when the next file cannot be
      read.  [ruby-core:34446]

  Modified files:
    branches/ruby_1_9_2/ChangeLog
    branches/ruby_1_9_2/io.c
    branches/ruby_1_9_2/test/ruby/test_argf.rb
    branches/ruby_1_9_2/version.h

Index: ruby_1_9_2/ChangeLog
===================================================================
--- ruby_1_9_2/ChangeLog	(revision 30573)
+++ ruby_1_9_2/ChangeLog	(revision 30574)
@@ -1,3 +1,8 @@
+Fri Jan 14 07:30:47 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* io.c (argf_next_argv): go advance when the next file cannot be
+	  read.  [ruby-core:34446]
+
 Wed Jan 12 23:55:48 2011  KOSAKI Motohiro  <kosaki.motohiro@g...>
 
 	* io.c (rb_f_syscall): Add 64bit Linux support. Some syscall takes
Index: ruby_1_9_2/io.c
===================================================================
--- ruby_1_9_2/io.c	(revision 30573)
+++ ruby_1_9_2/io.c	(revision 30574)
@@ -6778,7 +6778,6 @@
     }
 
     if (ARGF.next_p == 1) {
-	ARGF.next_p = 0;
       retry:
 	if (RARRAY_LEN(ARGF.argv) > 0) {
 	    ARGF.filename = rb_ary_shift(ARGF.argv);
@@ -6867,6 +6866,7 @@
 		fptr->encs = ARGF.encs;
                 clear_codeconv(fptr);
 	    }
+	    ARGF.next_p = 0;
 	}
 	else {
 	    ARGF.next_p = 1;
Index: ruby_1_9_2/version.h
===================================================================
--- ruby_1_9_2/version.h	(revision 30573)
+++ ruby_1_9_2/version.h	(revision 30574)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.2"
-#define RUBY_PATCHLEVEL 154
+#define RUBY_PATCHLEVEL 155
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 9
 #define RUBY_VERSION_TEENY 1
Index: ruby_1_9_2/test/ruby/test_argf.rb
===================================================================
--- ruby_1_9_2/test/ruby/test_argf.rb	(revision 30573)
+++ ruby_1_9_2/test/ruby/test_argf.rb	(revision 30574)
@@ -694,4 +694,20 @@
       assert_equal([@t1.path, @t2.path, @t3.path].inspect, f.gets.chomp)
     end
   end
+
+  def test_unreadable
+    bug4274 = '[ruby-core:34446]'
+    paths = (1..2).map do
+      t = Tempfile.new("bug4274-")
+      path = t.path
+      t.close!
+      path
+    end
+    argf = ARGF.class.new(*paths)
+    paths.each do |path|
+      e = assert_raise(Errno::ENOENT) {argf.gets}
+      assert_match(/- #{Regexp.quote(path)}\z/, e.message)
+    end
+    assert_nil(argf.gets, bug4274)
+  end
 end

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

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