Kaydet (Commit) b72b0eb3 authored tarafından Andrew M. Kuchling's avatar Andrew M. Kuchling

#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.
üst 72aae73d
...@@ -892,17 +892,9 @@ class MH(Mailbox): ...@@ -892,17 +892,9 @@ class MH(Mailbox):
raise KeyError('No message with key: %s' % key) raise KeyError('No message with key: %s' % key)
else: else:
raise raise
try: else:
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:
f.close() f.close()
os.remove(path)
def __setitem__(self, key, message): def __setitem__(self, key, message):
"""Replace the keyed message; raise KeyError if it doesn't exist.""" """Replace the keyed message; raise KeyError if it doesn't exist."""
......
...@@ -979,6 +979,13 @@ class TestMH(TestMailbox): ...@@ -979,6 +979,13 @@ class TestMH(TestMailbox):
key0 = self._box.add(msg0) key0 = self._box.add(msg0)
refmsg0 = self._box.get_message(key0) 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): def test_pack(self):
# Pack the contents of the mailbox # Pack the contents of the mailbox
msg0 = mailbox.MHMessage(self._template % 0) msg0 = mailbox.MHMessage(self._template % 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment