diff mercurial/revlog.py @ 2289:854954fd410a

Fix revlog.parseindex parseindex could fail if read returns too little data in the right moment (e.g. when there's still leftover data from the previous iteration and read returns less than "s" bytes).
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Sun, 14 May 2006 18:22:12 -0300
parents 3f38e872f39a
children 9c15f85e61b1
line wrap: on
line diff
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -405,19 +405,17 @@ class revlog(object):
             if n == 0 and self.inlinedata():
                 # cache the first chunk
                 self.chunkcache = (0, data)
+            if leftover:
+                data = leftover + data
+                leftover = None
             off = 0
             l = len(data)
             while off < l:
                 if l - off < s:
                     leftover = data[off:]
                     break
-                if leftover:
-                    cur = leftover + data[off:off + s - len(leftover)]
-                    off += s - len(leftover)
-                    leftover = None
-                else:
-                    cur = data[off:off + s]
-                    off += s
+                cur = data[off:off + s]
+                off += s
                 e = struct.unpack(self.indexformat, cur)
                 self.index.append(e)
                 self.nodemap[e[-1]] = n