diff options
Diffstat (limited to 'lib/io/splice.rb')
-rw-r--r-- | lib/io/splice.rb | 13 |
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 |