mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 01:39:21 +03:00
packfile: do not rely on fp.tell()
Summary: On Windows, fp.tell() might return unreliable data for files with mixed reads and writes. Reviewed By: xavierd Differential Revision: D16035564 fbshipit-source-id: d6cbb018e2664dd1e4323c52e7b0c73df07d7796
This commit is contained in:
parent
6ad31bbf6a
commit
64e06423c5
@ -524,6 +524,7 @@ class mutablebasepack(versionmixin):
|
||||
|
||||
self._ui = ui
|
||||
self._packdir = packdir
|
||||
self._datalen = 0
|
||||
|
||||
self.entries = {}
|
||||
|
||||
@ -573,7 +574,10 @@ class mutablebasepack(versionmixin):
|
||||
self._cleantemppacks()
|
||||
|
||||
def writeraw(self, data):
|
||||
self.packfp.seek(self._datalen, os.SEEK_SET)
|
||||
assert self.packfp.tell() == self._datalen
|
||||
self.packfp.write(data)
|
||||
self._datalen += len(data)
|
||||
self.sha.update(data)
|
||||
|
||||
def close(self):
|
||||
|
@ -542,7 +542,7 @@ class mutabledatapack(basepack.mutablebasepack):
|
||||
if metadata and metadata.get(constants.METAKEYFLAG, 0) != 0:
|
||||
raise error.ProgrammingError("v0 pack cannot store flags")
|
||||
|
||||
offset = self.packfp.tell()
|
||||
offset = self._datalen
|
||||
|
||||
size = len(rawdata)
|
||||
|
||||
|
@ -463,7 +463,7 @@ class mutablehistorypack(basepack.mutablebasepack):
|
||||
def _write(self):
|
||||
for filename in sorted(self.fileentries):
|
||||
entrymap = self.fileentries[filename]
|
||||
sectionstart = self.packfp.tell()
|
||||
sectionstart = self._datalen
|
||||
|
||||
# Write the file section content
|
||||
def parentfunc(node):
|
||||
|
Loading…
Reference in New Issue
Block a user