diff -r d69245af4dbe -r a3f7e5461dbd mercurial/util.py --- a/mercurial/util.py Mon Oct 05 07:13:35 2015 +0200 +++ b/mercurial/util.py Mon Oct 05 16:28:12 2015 -0700 @@ -1292,10 +1292,13 @@ Returns less than L bytes if the iterator runs dry. If size parameter is omitted, read everything""" + if l is None: + return ''.join(self.iter) + left = l buf = [] queue = self._queue - while left is None or left > 0: + while left > 0: # refill the queue if not queue: target = 2**18 @@ -1308,9 +1311,8 @@ break chunk = queue.popleft() - if left is not None: - left -= len(chunk) - if left is not None and left < 0: + left -= len(chunk) + if left < 0: queue.appendleft(chunk[left:]) buf.append(chunk[:left]) else: