From 45a3efb4e179e83f1bea69cccb190945fbc8c1f8 Mon Sep 17 00:00:00 2001 From: Christian Tismer Date: Tue, 26 Nov 2019 11:54:37 +0100 Subject: Fix Python 3.8 problems This patch fixes some refcounting problems with Python 3.8 . One incompatible change was announced in the what's new document, but actually there were two more problems which were not explicitly mentioned but took much time to sort out. The patch is compatible with the limited API changes (tested with debug build and API error disabled). It is also independent of the Python version which is full Limited API support. For more info, see the documentation mentioned below. The flag error is circumvented now! We either find a better solution or leave it as it is. For now this is ok. Fixes: PYSIDE-939 Change-Id: Iff4a9816857a6ebe86efd4b654d8921e4e464939 Reviewed-by: Qt CI Bot Reviewed-by: Cristian Maureira-Fredes --- sources/pyside2/libpyside/pysidesignal.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'sources/pyside2/libpyside/pysidesignal.cpp') diff --git a/sources/pyside2/libpyside/pysidesignal.cpp b/sources/pyside2/libpyside/pysidesignal.cpp index ed1dcb729..ee435ab37 100644 --- a/sources/pyside2/libpyside/pysidesignal.cpp +++ b/sources/pyside2/libpyside/pysidesignal.cpp @@ -110,7 +110,7 @@ static PyType_Slot PySideMetaSignalType_slots[] = { {Py_tp_methods, (void *)MetaSignal_methods}, {Py_tp_base, (void *)&PyType_Type}, {Py_tp_free, (void *)PyObject_GC_Del}, - {Py_tp_dealloc, (void *)object_dealloc}, + {Py_tp_dealloc, (void *)Sbk_object_dealloc}, {0, 0} }; static PyType_Spec PySideMetaSignalType_spec = { @@ -142,7 +142,7 @@ static PyType_Slot PySideSignalType_slots[] = { {Py_tp_init, (void *)signalTpInit}, {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_free, (void *)signalFree}, - {Py_tp_dealloc, (void *)object_dealloc}, + {Py_tp_dealloc, (void *)Sbk_object_dealloc}, {0, 0} }; static PyType_Spec PySideSignalType_spec = { @@ -181,7 +181,7 @@ static PyType_Slot PySideSignalInstanceType_slots[] = { {Py_tp_methods, (void *)SignalInstance_methods}, {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_free, (void *)signalInstanceFree}, - {Py_tp_dealloc, (void *)object_dealloc}, + {Py_tp_dealloc, (void *)Sbk_object_dealloc}, {0, 0} }; static PyType_Spec PySideSignalInstanceType_spec = { @@ -619,7 +619,7 @@ void init(PyObject *module) { if (SbkSpecial_Type_Ready(module, PySideMetaSignalTypeF(), MetaSignal_SignatureStrings) < 0) return; - Py_INCREF(PySideSignalTypeF()); + Py_INCREF(PySideMetaSignalTypeF()); PyModule_AddObject(module, "MetaSignal", reinterpret_cast(PySideMetaSignalTypeF())); if (SbkSpecial_Type_Ready(module, PySideSignalTypeF(), Signal_SignatureStrings) < 0) -- cgit v1.2.3