diff options
author | Andrew M. Kuchling <amk@amk.ca> | 2010-02-22 18:42:07 (GMT) |
---|---|---|
committer | Andrew M. Kuchling <amk@amk.ca> | 2010-02-22 18:42:07 (GMT) |
commit | b72b0eb357e9237e9de95dadda18fda433f88aac (patch) | |
tree | 03d29eaa1a8677b69ce8d67e0b9548846c621e97 | |
parent | 72aae73d47ed9b41867d0264fe74e03d884cabf9 (diff) | |
download | cpython-b72b0eb357e9237e9de95dadda18fda433f88aac.zip cpython-b72b0eb357e9237e9de95dadda18fda433f88aac.tar.gz cpython-b72b0eb357e9237e9de95dadda18fda433f88aac.tar.bz2 |
#7627: MH.remove() would fail if the MH mailbox was locked;
it would call _unlock_file() and pass it a closed file object. Noted by Rob Austein.
-rwxr-xr-x | Lib/mailbox.py | 12 | ||||
-rw-r--r-- | Lib/test/test_mailbox.py | 7 |
2 files changed, 9 insertions, 10 deletions
diff --git a/Lib/mailbox.py b/Lib/mailbox.py index 4da5569..2b7b14e 100755 --- a/Lib/mailbox.py +++ b/Lib/mailbox.py @@ -892,17 +892,9 @@ class MH(Mailbox): raise KeyError('No message with key: %s' % key) else: raise - try: - if self._locked: - _lock_file(f) - try: - f.close() - os.remove(os.path.join(self._path, str(key))) - finally: - if self._locked: - _unlock_file(f) - finally: + else: f.close() + os.remove(path) def __setitem__(self, key, message): """Replace the keyed message; raise KeyError if it doesn't exist.""" diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index c88af06..7575ca7 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -979,6 +979,13 @@ class TestMH(TestMailbox): key0 = self._box.add(msg0) refmsg0 = self._box.get_message(key0) + def test_issue7627(self): + msg0 = mailbox.MHMessage(self._template % 0) + key0 = self._box.add(msg0) + self._box.lock() + self._box.remove(key0) + self._box.unlock() + def test_pack(self): # Pack the contents of the mailbox msg0 = mailbox.MHMessage(self._template % 0) |