comparison mercurial/branchmap.py @ 23819:6bf93440a717

branchmap: add seek() to end of file before calling tell() on append open() This is similar to 48c232873a54, which was subsequently modified in 19f5dec2d61f for 2.4. Unexpected test changes on Windows occurred without this.
author Matt Harbison <matt_harbison@yahoo.com>
date Sat, 10 Jan 2015 12:00:03 -0500
parents 7d63398fbfd1
children 7aa1405528a3
comparison
equal deleted inserted replaced
23818:45c95e2f99ad 23819:6bf93440a717
405 """Save branch cache if it is dirty.""" 405 """Save branch cache if it is dirty."""
406 if self._rbcnamescount < len(self._names): 406 if self._rbcnamescount < len(self._names):
407 try: 407 try:
408 if self._rbcnamescount != 0: 408 if self._rbcnamescount != 0:
409 f = repo.vfs.open(_rbcnames, 'ab') 409 f = repo.vfs.open(_rbcnames, 'ab')
410 # The position after open(x, 'a') is implementation defined-
411 # see issue3543. SEEK_END was added in 2.5
412 f.seek(0, 2) #os.SEEK_END
410 if f.tell() == self._rbcsnameslen: 413 if f.tell() == self._rbcsnameslen:
411 f.write('\0') 414 f.write('\0')
412 else: 415 else:
413 f.close() 416 f.close()
414 self._rbcnamescount = 0 417 self._rbcnamescount = 0
429 if start != len(self._rbcrevs): 432 if start != len(self._rbcrevs):
430 self._rbcrevslen = min(len(repo.changelog), 433 self._rbcrevslen = min(len(repo.changelog),
431 len(self._rbcrevs) // _rbcrecsize) 434 len(self._rbcrevs) // _rbcrecsize)
432 try: 435 try:
433 f = repo.vfs.open(_rbcrevs, 'ab') 436 f = repo.vfs.open(_rbcrevs, 'ab')
437 # The position after open(x, 'a') is implementation defined-
438 # see issue3543. SEEK_END was added in 2.5
439 f.seek(0, 2) #os.SEEK_END
434 if f.tell() != start: 440 if f.tell() != start:
435 f.seek(start) 441 f.seek(start)
436 f.truncate() 442 f.truncate()
437 end = self._rbcrevslen * _rbcrecsize 443 end = self._rbcrevslen * _rbcrecsize
438 f.write(self._rbcrevs[start:end]) 444 f.write(self._rbcrevs[start:end])