copy_stream: update src_offset on retries
authorEric Wong <normalperson@yhbt.net>
Fri, 13 May 2011 00:22:57 +0000 (12 17:22 -0700)
committerEric Wong <normalperson@yhbt.net>
Fri, 13 May 2011 00:22:57 +0000 (12 17:22 -0700)
Oops :x

lib/io/splice.rb

index 0802c3b..54a3f04 100644 (file)
@@ -48,6 +48,7 @@ module IO::Splice
         rv = 0
         while n = partial(src, dst, PIPE_CAPA, src_offset)
           rv += n
+          src_offset += n if src_offset
         end
       end
     else
@@ -55,11 +56,13 @@ module IO::Splice
       close.concat(tmp)
       if len
         while len != 0 && n = partial(src, w, len, src_offset)
+          src_offset += n if src_offset
           len -= full(r, dst, n, nil)
         end
       else
         rv = 0
         while n = partial(src, w, PIPE_CAPA, src_offset)
+          src_offset += n if src_offset
           rv += full(r, dst, n, nil)
         end
       end