From bb8f59a37148eb81ef1a1a26a6fb6e1e03583d12 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 3 Dec 2001 19:33:25 +0000 Subject: unpack_iterable(): Add a missing DECREF in an error case. Reported by Armin Rigo (SF bug #488477). Added a testcase to test_unpack_iter() in test_iter.py. --- Lib/test/test_iter.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'Lib/test') diff --git a/Lib/test/test_iter.py b/Lib/test/test_iter.py index 5bd7ba44a5b..13ed5bd4a8b 100644 --- a/Lib/test/test_iter.py +++ b/Lib/test/test_iter.py @@ -747,6 +747,29 @@ class TestCase(unittest.TestCase): (a, b), (c,) = IteratingSequenceClass(2), {42: 24} self.assertEqual((a, b, c), (0, 1, 42)) + # Test reference count behavior + + class C(object): + count = 0 + def __new__(cls): + cls.count += 1 + return object.__new__(cls) + def __del__(self): + cls = self.__class__ + assert cls.count > 0 + cls.count -= 1 + x = C() + self.assertEqual(C.count, 1) + del x + self.assertEqual(C.count, 0) + l = [C(), C(), C()] + self.assertEqual(C.count, 3) + try: + a, b = iter(l) + except ValueError: + pass + del l + self.assertEqual(C.count, 0) def test_main(): run_unittest(TestCase) -- cgit v1.2.3