Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 98:3dde7c87e36d
Add paranoia to diff code
author | mpm@selenic.com |
---|---|
date | Wed, 18 May 2005 16:59:54 -0800 |
parents | 7a2abee6b0c2 |
children | aea6562add6c |
comparison
equal
deleted
inserted
replaced
97:7a2abee6b0c2 | 98:3dde7c87e36d |
---|---|
188 | 188 |
189 text = mdiff.patches(text, bins) | 189 text = mdiff.patches(text, bins) |
190 | 190 |
191 (p1, p2) = self.parents(node) | 191 (p1, p2) = self.parents(node) |
192 if node != hash(text, p1, p2): | 192 if node != hash(text, p1, p2): |
193 raise "integrity check failed on %s:%d" % (self.datafile, rev) | 193 raise IOError("integrity check failed on %s:%d" |
194 % (self.datafile, rev)) | |
194 | 195 |
195 self.cache = (node, rev, text) | 196 self.cache = (node, rev, text) |
196 return text | 197 return text |
197 | 198 |
198 def addrevision(self, text, transaction, link, p1=None, p2=None): | 199 def addrevision(self, text, transaction, link, p1=None, p2=None): |
208 if n: | 209 if n: |
209 base = self.base(t) | 210 base = self.base(t) |
210 start = self.start(base) | 211 start = self.start(base) |
211 end = self.end(t) | 212 end = self.end(t) |
212 prev = self.revision(self.tip()) | 213 prev = self.revision(self.tip()) |
213 data = compress(self.diff(prev, text)) | 214 d = self.diff(prev, text) |
215 if self.patches(prev, [d]) != text: | |
216 raise AssertionError("diff failed") | |
217 data = compress(d) | |
214 dist = end - start + len(data) | 218 dist = end - start + len(data) |
215 | 219 |
216 # full versions are inserted when the needed deltas | 220 # full versions are inserted when the needed deltas |
217 # become comparable to the uncompressed text | 221 # become comparable to the uncompressed text |
218 if not n or dist > len(text) * 2: | 222 if not n or dist > len(text) * 2: |