mirror of
https://github.com/python/cpython.git
synced 2024-11-24 18:34:43 +08:00
Fix #11116 fix on Windows (close file before removing in MH code)
This commit is contained in:
parent
fc14114ca9
commit
774a66deda
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user