about summary refs log tree commit homepage
path: root/lib/io/splice.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/io/splice.rb')
-rw-r--r--lib/io/splice.rb13
1 files changed, 5 insertions, 8 deletions
diff --git a/lib/io/splice.rb b/lib/io/splice.rb
index 4b666f8..84bca5e 100644
--- a/lib/io/splice.rb
+++ b/lib/io/splice.rb
@@ -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