summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2008-07-07 04:31:58 (GMT)
committerGregory P. Smith <greg@mad-scientist.com>2008-07-07 04:31:58 (GMT)
commit3b1e6b2f833d1e030b2ff853e1a942dc0de968f5 (patch)
tree431edbd1f84590c5101f36385778f9ffa6c26eb7 /Lib
parent0f7cddc308b297e6a1c2dd61503acea38401656f (diff)
downloadcpython-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.py11
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()