#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.
This commit is contained in:
parent
72aae73d47
commit
b72b0eb357
|
@ -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):
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue