# HG changeset patch # User Matt Mackall # Date 1185241447 18000 # Node ID a386a6e4fe46b3037b7aeebce61f9b1c0f38932b # Parent 8d0cf46e0dc69f4144e2a2dd90d5b25d982fbfaf revlog: simplify the v0 parser diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -300,33 +300,16 @@ class revlogoldio(object): s = struct.calcsize(indexformatv0) index = [] nodemap = {nullid: nullrev} - n = 0 - leftover = None - while True: - if st: - data = fp.read(65536) - else: - # hack for httprangereader, it doesn't do partial reads well - data = fp.read() - if not data: - break - if leftover: - data = leftover + data - leftover = None - off = 0 - l = len(data) - while off < l: - if l - off < s: - leftover = data[off:] - break - cur = data[off:off + s] - off += s - e = struct.unpack(indexformatv0, cur) - index.append(e) - nodemap[e[-1]] = n - n += 1 - if not st: - break + n = off = 0 + data = fp.read() + l = len(data) + while off + s <= l: + cur = data[off:off + s] + off += s + e = struct.unpack(indexformatv0, cur) + index.append(e) + nodemap[e[-1]] = n + n += 1 return index, nodemap