[PATCH] obsolete: add seek to end of file before calling tell (issue3543)
Adrian Buehlmann
adrian at cadifra.com
Mon Jul 16 15:42:32 CDT 2012
# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1342471064 -7200
# Node ID 786ebb5187776de003ec1d67d1507a757ebcfcb5
# Parent f76e2196ee709d0771ccdaa7e456f8f1e7339270
obsolete: add seek to end of file before calling tell (issue3543)
diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -51,7 +51,7 @@
additional encoding. Keys cannot contain '\0' or ':' and values
cannot contain '\0'.
"""
-import struct
+import os, struct
from mercurial import util, base85
from i18n import _
@@ -195,6 +195,12 @@
if marker not in self._all:
f = self.sopener('obsstore', 'ab')
try:
+ # Whether the file's current position is at the begin or at
+ # the end after opening a file for appending is implementation
+ # defined. So we must seek to the end before calling tell(),
+ # or we may get a zero offset for non-zero sized files on
+ # some platforms (issue3543).
+ f.seek(0, os.SEEK_END)
offset = f.tell()
transaction.add('obsstore', offset)
if offset == 0:
More information about the Mercurial-devel
mailing list