From 9b8eca5826cf32c790bbb1e1f8836dc1754a4ef9 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Tue, 30 Sep 2014 10:17:05 +0100 Subject: xfer-hole: Fix bug in copy_slice_from_file. os.read is limited to an int in size. copy_slice_from_file was trying to os.read more than that causing an OverflowError. --- xfer-hole | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/xfer-hole b/xfer-hole index 0d4cee7a..22ee06bf 100755 --- a/xfer-hole +++ b/xfer-hole @@ -120,8 +120,14 @@ def make_xfer_instructions(fd): def copy_slice_from_file(to, fd, start, end): safe_lseek(fd, start, os.SEEK_SET) - data = os.read(fd, end - start) - to.write(data) + nbytes = end - start + max_at_a_time = 1024**2 + while nbytes > 0: + data = os.read(fd, min(nbytes, max_at_a_time)) + if not data: + break + to.write(data) + nbytes -= len(data) for kind, start, end in make_xfer_instructions(fd): -- cgit v1.2.1