X-Git-Url: https://git.rkrishnan.org/?a=blobdiff_plain;f=src%2Fallmydata%2Fmutable%2Fretrieve.py;h=f6c99d0ff10224fb1b956bc7791aca5fc9bf7d3a;hb=32e30c9023479e3cba180d880025375a51971f46;hp=7498a134dd014ddb243e06236905d4668382c4b4;hpb=1dcfec7ff3dd9b903d1cd6d63790eb6542cdce77;p=tahoe-lafs%2Ftahoe-lafs.git diff --git a/src/allmydata/mutable/retrieve.py b/src/allmydata/mutable/retrieve.py index 7498a134..f6c99d0f 100644 --- a/src/allmydata/mutable/retrieve.py +++ b/src/allmydata/mutable/retrieve.py @@ -404,18 +404,24 @@ class Retrieve: self._start_segment = 0 - if self._read_length: + # If self._read_length is None, then we want to read the whole + # file. Otherwise, we want to read only part of the file, and + # need to figure out where to stop reading. + if self._read_length is not None: # our end segment is the last segment containing part of the # segment that we were asked to read. self.log("got read length %d" % self._read_length) - end_data = self._offset + self._read_length + if self._read_length != 0: + end_data = self._offset + self._read_length - # We don't actually need to read the byte at end_data, but - # the one before it. - end = (end_data - 1) // self._segment_size + # We don't actually need to read the byte at end_data, + # but the one before it. + end = (end_data - 1) // self._segment_size - assert end < self._num_segments - self._last_segment = end + assert end < self._num_segments + self._last_segment = end + else: + self._last_segment = self._start_segment self.log("got end segment: %d" % self._last_segment) else: self._last_segment = self._num_segments - 1