copy_stream: small cleanup for pipe splicing
authorEric Wong <normalperson@yhbt.net>
Wed, 18 May 2011 20:47:54 +0000 (18 13:47 -0700)
committerEric Wong <normalperson@yhbt.net>
Wed, 18 May 2011 20:48:34 +0000 (18 13:48 -0700)
No need to loop on IO::Splice.full, it already loops
internally whenever it makes sense.

lib/io/splice.rb

index 4b666f8..84bca5e 100644 (file)
@@ -47,14 +47,11 @@ module IO::Splice
     src, dst = src.to_io, dst.to_io
 
     if src.stat.pipe? || dst.stat.pipe?
-      if len
-        len -= full(src, dst, len, src_offset) until len == 0
-      else
-        rv = 0
-        while n = partial(src, dst, PIPE_CAPA, src_offset)
-          rv += n
-          src_offset += n if src_offset
-        end
+      return full(src, dst, len, src_offset) if len
+      rv = 0
+      while n = partial(src, dst, PIPE_CAPA, src_offset)
+        rv += n
+        src_offset += n if src_offset
       end
     else
       r, w = tmp = IO.pipe