summaryrefslogtreecommitdiff
path: root/Lib/mailbox.py
diff options
context:
space:
mode:
authorR. David Murray <rdmurray@bitdance.com>2011-02-12 02:03:56 +0000
committerR. David Murray <rdmurray@bitdance.com>2011-02-12 02:03:56 +0000
commitf9e342321ac1dcd8b3a27171356b9c14948d581e (patch)
tree92d5d2d2b30bce6fd0a17e8992d6f995e60ad031 /Lib/mailbox.py
parent008c0448bdcef20ed0670cae6d4b72d54a8faffa (diff)
downloadcpython-git-f9e342321ac1dcd8b3a27171356b9c14948d581e.tar.gz
Merged revisions 88407 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r88407 | r.david.murray | 2011-02-11 19:03:31 -0500 (Fri, 11 Feb 2011) | 2 lines Fix #11116 fix on Windows (close file before removing in MH code) ........
Diffstat (limited to 'Lib/mailbox.py')
-rw-r--r--Lib/mailbox.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index 5f54ea1312..728ce2ad69 100644
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -876,6 +876,7 @@ class MH(Mailbox):
new_key = max(keys) + 1
new_path = os.path.join(self._path, str(new_key))
f = _create_carefully(new_path)
+ closed = False
try:
if self._locked:
_lock_file(f)
@@ -883,6 +884,11 @@ class MH(Mailbox):
try:
self._dump_message(message, f)
except BaseException:
+ # Unlock and close so it can be deleted on Windows
+ if self._locked:
+ _unlock_file(f)
+ _sync_close(f)
+ closed = True
os.remove(new_path)
raise
if isinstance(message, MHMessage):
@@ -891,7 +897,8 @@ class MH(Mailbox):
if self._locked:
_unlock_file(f)
finally:
- _sync_close(f)
+ if not closed:
+ _sync_close(f)
return new_key
def remove(self, key):