diff options
| author | Christian Tismer <tismer@stackless.com> | 2023-02-14 14:46:22 +0100 |
|---|---|---|
| committer | Christian Tismer <tismer@stackless.com> | 2023-10-09 08:54:27 +0200 |
| commit | 441ffbd4fc622e67acd81e9c1c6d3a0b0fbcacf0 (patch) | |
| tree | 83226e3bccf205f6a941c53ce3698c88f99b7935 /sources/pyside6/libpyside/pysideproperty.cpp | |
| parent | 92a4a2a0ed7a8a391406030d1db813de7dd31429 (diff) | |
Support running PySide on Python 3.12
Builtin types no longer have tp_dict set. We need to
use PyType_GetDict, instead. This works without Limited API
at the moment.
With some great cheating, this works with Limited API, too.
We emulate PyType_GetDict by tp_dict if that is not 0.
Otherwise we create an empty dict.
Some small changes to Exception handling and longer
warm-up in leaking tests were found, too.
Pick-to: 6.6 6.5 6.2
Task-number: PYSIDE-2230
Change-Id: I8a56de6208ec00979255b39b5784dfc9b4b92def
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pysideproperty.cpp')
| -rw-r--r-- | sources/pyside6/libpyside/pysideproperty.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sources/pyside6/libpyside/pysideproperty.cpp b/sources/pyside6/libpyside/pysideproperty.cpp index 2658b5f03..d68185667 100644 --- a/sources/pyside6/libpyside/pysideproperty.cpp +++ b/sources/pyside6/libpyside/pysideproperty.cpp @@ -443,8 +443,8 @@ static int qpropertyClear(PyObject *self) static PyObject *getFromType(PyTypeObject *type, PyObject *name) { - PyObject *attr = nullptr; - attr = PyDict_GetItem(type->tp_dict, name); + AutoDecRef tpDict(PepType_GetDict(type)); + auto *attr = PyDict_GetItem(tpDict.object(), name); if (!attr) { PyObject *bases = type->tp_bases; const Py_ssize_t size = PyTuple_GET_SIZE(bases); |
