Merged revisions 88403 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k Test not backported since they depend on 3.x quirks. Not easy to rewrite them for 2.7. ........ r88403 | r.david.murray | 2011-02-11 17:47:17 -0500 (Fri, 11 Feb 2011) | 3 lines #11116: roll back on error during add so mailbox isn't left corrupted. ........
This commit is contained in:
parent
46c4e4709a
commit
008c0448bd
|
@ -253,8 +253,11 @@ class Maildir(Mailbox):
|
||||||
tmp_file = self._create_tmp()
|
tmp_file = self._create_tmp()
|
||||||
try:
|
try:
|
||||||
self._dump_message(message, tmp_file)
|
self._dump_message(message, tmp_file)
|
||||||
finally:
|
except BaseException:
|
||||||
_sync_close(tmp_file)
|
tmp_file.close()
|
||||||
|
os.remove(tmp_file.name)
|
||||||
|
raise
|
||||||
|
_sync_close(tmp_file)
|
||||||
if isinstance(message, MaildirMessage):
|
if isinstance(message, MaildirMessage):
|
||||||
subdir = message.get_subdir()
|
subdir = message.get_subdir()
|
||||||
suffix = self.colon + message.get_info()
|
suffix = self.colon + message.get_info()
|
||||||
|
@ -700,9 +703,14 @@ class _singlefileMailbox(Mailbox):
|
||||||
def _append_message(self, message):
|
def _append_message(self, message):
|
||||||
"""Append message to mailbox and return (start, stop) offsets."""
|
"""Append message to mailbox and return (start, stop) offsets."""
|
||||||
self._file.seek(0, 2)
|
self._file.seek(0, 2)
|
||||||
self._pre_message_hook(self._file)
|
before = self._file.tell()
|
||||||
offsets = self._install_message(message)
|
try:
|
||||||
self._post_message_hook(self._file)
|
self._pre_message_hook(self._file)
|
||||||
|
offsets = self._install_message(message)
|
||||||
|
self._post_message_hook(self._file)
|
||||||
|
except BaseException:
|
||||||
|
self._file.truncate(before)
|
||||||
|
raise
|
||||||
self._file.flush()
|
self._file.flush()
|
||||||
self._file_length = self._file.tell() # Record current length of mailbox
|
self._file_length = self._file.tell() # Record current length of mailbox
|
||||||
return offsets
|
return offsets
|
||||||
|
@ -872,7 +880,11 @@ class MH(Mailbox):
|
||||||
if self._locked:
|
if self._locked:
|
||||||
_lock_file(f)
|
_lock_file(f)
|
||||||
try:
|
try:
|
||||||
self._dump_message(message, f)
|
try:
|
||||||
|
self._dump_message(message, f)
|
||||||
|
except BaseException:
|
||||||
|
os.remove(new_path)
|
||||||
|
raise
|
||||||
if isinstance(message, MHMessage):
|
if isinstance(message, MHMessage):
|
||||||
self._dump_sequences(message, new_key)
|
self._dump_sequences(message, new_key)
|
||||||
finally:
|
finally:
|
||||||
|
|
|
@ -37,6 +37,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #11116: any error during addition of a message to a mailbox now causes
|
||||||
|
a rollback, instead of leaving the mailbox partially modified.
|
||||||
|
|
||||||
- Issue #8275: Fix passing of callback arguments with ctypes under Win64.
|
- Issue #8275: Fix passing of callback arguments with ctypes under Win64.
|
||||||
Patch by Stan Mihai.
|
Patch by Stan Mihai.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue