diff options
author | Gregory P. Smith <greg@mad-scientist.com> | 2008-07-07 04:31:58 (GMT) |
---|---|---|
committer | Gregory P. Smith <greg@mad-scientist.com> | 2008-07-07 04:31:58 (GMT) |
commit | 3b1e6b2f833d1e030b2ff853e1a942dc0de968f5 (patch) | |
tree | 431edbd1f84590c5101f36385778f9ffa6c26eb7 /Lib | |
parent | 0f7cddc308b297e6a1c2dd61503acea38401656f (diff) | |
download | cpython-3b1e6b2f833d1e030b2ff853e1a942dc0de968f5.zip cpython-3b1e6b2f833d1e030b2ff853e1a942dc0de968f5.tar.gz cpython-3b1e6b2f833d1e030b2ff853e1a942dc0de968f5.tar.bz2 |
- Issue #3309: Fix bz2.BZFile itererator to release its internal lock
properly when raising an exception due to the bz2file being closed.
Prevents a deadlock.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_bz2.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index b8b3c03..c4d9b69 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -112,6 +112,17 @@ class BZ2FileTest(BaseTest): self.assertEqual(list(iter(bz2f)), sio.readlines()) bz2f.close() + def testClosedIteratorDeadlock(self): + # "Test that iteration on a closed bz2file releases the lock." + # http://bugs.python.org/issue3309 + self.createTempFile() + bz2f = BZ2File(self.filename) + bz2f.close() + self.assertRaises(ValueError, bz2f.next) + # This call will deadlock of the above .next call failed to + # release the lock. + self.assertRaises(ValueError, bz2f.readlines) + def testXReadLines(self): # "Test BZ2File.xreadlines()" self.createTempFile() |