Mercurial > public > mercurial-scm > hg
diff mercurial/revlog.py @ 1667:daff3ef0de8d
verify: notice extra data in indices
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 30 Jan 2006 19:34:35 +1300 |
parents | b2df93c56ac4 |
children | c21b54f7f7b8 8959700c2b19 |
line wrap: on
line diff
--- a/mercurial/revlog.py Mon Jan 30 13:01:16 2006 +1300 +++ b/mercurial/revlog.py Mon Jan 30 19:34:35 2006 +1300 @@ -213,7 +213,7 @@ m = [None] * l n = 0 - for f in xrange(0, len(i), s): + for f in xrange(0, l * s, s): # offset, size, base, linkrev, p1, p2, nodeid e = struct.unpack(indexformat, i[f:f + s]) m[n] = (e[6], n) @@ -841,14 +841,29 @@ expected = 0 if self.count(): expected = self.end(self.count() - 1) + try: f = self.opener(self.datafile) f.seek(0, 2) actual = f.tell() - return expected - actual + dd = actual - expected except IOError, inst: - if inst.errno == errno.ENOENT: - return 0 - raise + if inst.errno != errno.ENOENT: + raise + dd = 0 + + try: + f = self.opener(self.indexfile) + f.seek(0, 2) + actual = f.tell() + s = struct.calcsize(indexformat) + i = actual / s + di = actual - (i * s) + except IOError, inst: + if inst.errno != errno.ENOENT: + raise + di = 0 + + return (dd, di)