# HG changeset patch # User Brendan Cully # Date 1177532041 25200 # Node ID e33ad7cea15fd01ad055be44ab801237fb843399 # Parent 4759da3e4dc8e3fd4ae35c7e4e9f94225fa86e85 Do not automatically rename an atomicfile if a write to it has generated an exception. diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -1161,11 +1161,19 @@ def opener(base, audit=True): class atomicfile(atomictempfile): """the file will only be copied on close""" def __init__(self, name, mode): + self._err = False atomictempfile.__init__(self, name, mode) + def write(self, s): + try: + atomictempfile.write(self, s) + except: + self._err = True + raise def close(self): self.rename() def __del__(self): - self.rename() + if not self._err: + self.rename() def o(path, mode="r", text=False, atomic=False, atomictemp=False): if audit_p: