From: R. David Murray Date: Sat, 12 Feb 2011 00:03:31 +0000 (+0000) Subject: Fix #11116 fix on Windows (close file before removing in MH code) X-Git-Tag: v3.2rc3~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=774a66deda3a1573171c7c1ea9930ac769180604;p=python Fix #11116 fix on Windows (close file before removing in MH code) --- diff --git a/Lib/mailbox.py b/Lib/mailbox.py index 928e795cde..2a0d321c94 100644 --- a/Lib/mailbox.py +++ b/Lib/mailbox.py @@ -910,6 +910,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) @@ -917,6 +918,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): @@ -925,7 +931,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):