Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlog.py @ 19764:e92650e39f1c stable
generaldelta: initialize basecache properly
Previously basecache was incorrectly initialized before adding the first
revision from a changegroup. Basecache value influences when full revisions are
stored in revlog (when using generaldelta). As a result it was possible to
generate a generaldelta-revlog that could be bigger by arbitrary factor than its
non-generaldelta equivalent.
author | Wojciech Lopata <lopek@fb.com> |
---|---|
date | Fri, 20 Sep 2013 10:45:51 -0700 |
parents | fd1bb7c1be78 |
children | a9e92b11a3f2 |
line wrap: on
line diff
--- a/mercurial/revlog.py Sat Sep 07 15:07:10 2013 -0500 +++ b/mercurial/revlog.py Fri Sep 20 10:45:51 2013 -0700 @@ -200,7 +200,7 @@ self.datafile = indexfile[:-2] + ".d" self.opener = opener self._cache = None - self._basecache = (0, 0) + self._basecache = None self._chunkcache = (0, '') self.index = [] self._pcache = {} @@ -1095,6 +1095,8 @@ offset = self.end(prev) flags = 0 d = None + if self._basecache is None: + self._basecache = (prev, self.chainbase(prev)) basecache = self._basecache p1r, p2r = self.rev(p1), self.rev(p2)