diff --git a/mercurial/filelog.py b/mercurial/filelog.py --- a/mercurial/filelog.py +++ b/mercurial/filelog.py @@ -144,8 +144,12 @@ if self.iscensored(rev): return 0 - # XXX if self.read(node).startswith("\1\n"), this returns (size+4) - return self._revlog.size(rev) + size = self._revlog.size(rev) + + if self.read(node).startswith(b'\x01\n'): + size -= 4 + + return size def cmp(self, node, text): """compare text with a given file revision diff --git a/mercurial/testing/storage.py b/mercurial/testing/storage.py --- a/mercurial/testing/storage.py +++ b/mercurial/testing/storage.py @@ -859,9 +859,7 @@ node0 = f.add(fulltext0, {}, tr, 0, nullid, nullid) node1 = f.add(fulltext1, meta1, tr, 1, nullid, nullid) - # TODO this is buggy. - self.assertEqual(f.size(0), len(fulltext0) + 4) - + self.assertEqual(f.size(0), len(fulltext0)) self.assertEqual(f.size(1), len(fulltext1)) self.assertEqual(f.revision(node0), stored0) diff --git a/tests/test-filelog.py.out b/tests/test-filelog.py.out --- a/tests/test-filelog.py.out +++ b/tests/test-filelog.py.out @@ -1,2 +1 @@ -ERROR: FIXME: This is a known failure of filelog.size for data starting with \1\n OK.