diff 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
line wrap: on
line diff
--- a/mercurial/revlog.py	Wed May 18 16:47:49 2005 -0800
+++ b/mercurial/revlog.py	Wed May 18 16:59:54 2005 -0800
@@ -190,7 +190,8 @@
 
         (p1, p2) = self.parents(node)
         if node != hash(text, p1, p2):
-            raise "integrity check failed on %s:%d" % (self.datafile, rev)
+            raise IOError("integrity check failed on %s:%d"
+                          % (self.datafile, rev))
 
         self.cache = (node, rev, text)
         return text  
@@ -210,7 +211,10 @@
             start = self.start(base)
             end = self.end(t)
             prev = self.revision(self.tip())
-            data = compress(self.diff(prev, text))
+            d = self.diff(prev, text)
+            if self.patches(prev, [d]) != text:
+                raise AssertionError("diff failed")
+            data = compress(d)
             dist = end - start + len(data)
 
         # full versions are inserted when the needed deltas