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

ruby-changes:4634

From: ko1@a...
Date: Mon, 21 Apr 2008 19:09:48 +0900 (JST)
Subject: [ruby-changes:4634] akr - Ruby:r16128 (trunk): * io.c (copy_stream_body): call rb_io_check_readable and

akr	2008-04-21 19:09:33 +0900 (Mon, 21 Apr 2008)

  New Revision: 16128

  Modified files:
    trunk/ChangeLog
    trunk/io.c
    trunk/test/ruby/test_io.rb

  Log:
    * io.c (copy_stream_body): call rb_io_check_readable and
      rb_io_check_writable.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_io.rb?r1=16128&r2=16127&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16128&r2=16127&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/io.c?r1=16128&r2=16127&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 16127)
+++ ChangeLog	(revision 16128)
@@ -1,3 +1,8 @@
+Mon Apr 21 19:08:32 2008  Tanaka Akira  <akr@f...>
+
+	* io.c (copy_stream_body): call rb_io_check_readable and
+	  rb_io_check_writable.
+
 Mon Apr 21 17:45:27 2008  Akinori MUSHA  <knu@i...>
 
 	* ext/dbm/dbm.c (fdbm_each_value, fdbm_each_key, fdbm_each_pair):
Index: io.c
===================================================================
--- io.c	(revision 16127)
+++ io.c	(revision 16128)
@@ -6628,6 +6628,7 @@
             stp->close_src = 1;
         }
         GetOpenFile(src_io, src_fptr);
+        rb_io_check_readable(src_fptr);
         src_fd = src_fptr->fd;
     }
     stp->src_fd = src_fd;
@@ -6660,6 +6661,7 @@
             stp->dst = dst_io;
         }
         GetOpenFile(dst_io, dst_fptr);
+        rb_io_check_writable(dst_fptr);
         dst_fd = dst_fptr->fd;
     }
     stp->dst_fd = dst_fd;
Index: test/ruby/test_io.rb
===================================================================
--- test/ruby/test_io.rb	(revision 16127)
+++ test/ruby/test_io.rb	(revision 16128)
@@ -237,7 +237,6 @@
         }
       }
 
-
       bigcontent = "abc" * 123456
       File.open("bigsrc", "w") {|f| f << bigcontent }
       ret = IO.copy_stream("bigsrc", "bigdst")
@@ -511,4 +510,39 @@
       assert_equal("bcd", sio.string)
     }
   end
+
+  def test_copy_stream_src_wbuf
+    mkcdtmpdir {|d|
+      with_pipe {|r, w|
+        File.open("foe", "w+") {|f|
+          f.write "abcd\n"
+          f.rewind
+          f.write "xy"
+          IO.copy_stream(f, w)
+        }
+        assert_equal("xycd\n", File.read("foe"))
+        w.close
+        assert_equal("cd\n", r.read)
+        r.close
+      }
+    }
+  end
+
+  def test_copy_stream_dst_rbuf
+    mkcdtmpdir {|d|
+      with_pipe {|r, w|
+        w << "xyz"
+        w.close
+        File.open("fom", "w+") {|f|
+          f.write "abcd\n"
+          f.rewind
+          assert_equal("abc", f.read(3))
+          f.ungetc "c"
+          IO.copy_stream(r, f)
+        }
+        assert_equal("abxyz", File.read("fom"))
+      }
+    }
+  end
+
 end

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

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