diff options
author | Christian Tismer <tismer@stackless.com> | 2020-05-17 14:56:49 +0200 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2020-05-18 18:11:25 +0200 |
commit | 8e22b0d5b52f615a9b8ed4d278d103df9f2bd71c (patch) | |
tree | 16a11d7659993e71d4c30824626a985d747850b9 /sources/pyside2/tests | |
parent | c82ec2bcbdf4db8fc83fefaec6377aaf2bb3614b (diff) |
sbkenum: Fix refcounting leak
sbkenum had a wrong deallocator and some other errors.
Found while developing pickling on enums.
At the same time, a wrong Python 3.8 condition was removed.
There are currently no additional bugs in Python 2.7, 3.7 and 3.8.
Change-Id: I4abccf3b84a3738bba7781ea3dfd00e98ae63ea1
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside2/tests')
-rw-r--r-- | sources/pyside2/tests/QtCore/qenum_test.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sources/pyside2/tests/QtCore/qenum_test.py b/sources/pyside2/tests/QtCore/qenum_test.py index ed58f4f20..1edb8981a 100644 --- a/sources/pyside2/tests/QtCore/qenum_test.py +++ b/sources/pyside2/tests/QtCore/qenum_test.py @@ -30,6 +30,7 @@ '''Test cases for QEnum and QFlags''' +import gc import os import sys import pickle @@ -75,6 +76,22 @@ class TestEnum(unittest.TestCase): with self.assertRaises(TypeError): a = k*2.0 + @unittest.skipUnless(getattr(sys, "getobjects", None), "requires debug build") + def testEnumNew_NoLeak(self): + gc.collect() + total = sys.gettotalrefcount() + for idx in range(1000): + ret = Qt.Key(42) + gc.collect() + delta = sys.gettotalrefcount() - total + print("delta total refcount =", delta) + if abs(delta) >= 10: + all = sys.getobjects(0) + all.sort(key=lambda x: sys.getrefcount(x), reverse=True) + for ob in all[:10]: + print(sys.getrefcount(ob), ob) + self.assertTrue(abs(delta) < 10) + class TestQFlags(unittest.TestCase): def testToItn(self): |