comparison mercurial/revlog.py @ 17150:3ac9592b7ab4

backout e7167007c083 This may have allowed unbounded I/O sizes with the current chunk retrieval code.
author Matt Mackall <mpm@selenic.com>
date Thu, 12 Jul 2012 14:20:34 -0500
parents ad1b5e070f16
children e7cfe3587ea4 fe3b26048140
comparison
equal deleted inserted replaced
17149:4b33422e2572 17150:3ac9592b7ab4
318 base = index[rev][3] 318 base = index[rev][3]
319 while base != rev: 319 while base != rev:
320 rev = base 320 rev = base
321 base = index[rev][3] 321 base = index[rev][3]
322 return base 322 return base
323 def chainlength(self, rev):
324 index = self.index
325 base = index[rev][3]
326 length = index[rev][1]
327 while base != rev:
328 rev = base
329 base = index[rev][3]
330 length = length + index[rev][1]
331 return length
332 def flags(self, rev): 323 def flags(self, rev):
333 return self.index[rev][0] & 0xFFFF 324 return self.index[rev][0] & 0xFFFF
334 def rawsize(self, rev): 325 def rawsize(self, rev):
335 """return the length of the uncompressed text for a given revision""" 326 """return the length of the uncompressed text for a given revision"""
336 l = self.index[rev][2] 327 l = self.index[rev][2]
1053 l = len(data[1]) + len(data[0]) 1044 l = len(data[1]) + len(data[0])
1054 if basecache[0] == rev: 1045 if basecache[0] == rev:
1055 chainbase = basecache[1] 1046 chainbase = basecache[1]
1056 else: 1047 else:
1057 chainbase = self.chainbase(rev) 1048 chainbase = self.chainbase(rev)
1049 dist = l + offset - self.start(chainbase)
1058 if self._generaldelta: 1050 if self._generaldelta:
1059 dist = l + self.chainlength(rev)
1060 base = rev 1051 base = rev
1061 else: 1052 else:
1062 dist = l + offset - self.start(chainbase)
1063 base = chainbase 1053 base = chainbase
1064 return dist, l, data, base, chainbase 1054 return dist, l, data, base, chainbase
1065 1055
1066 curr = len(self) 1056 curr = len(self)
1067 prev = curr - 1 1057 prev = curr - 1