diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-04-05 17:09:01 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-04-21 09:06:33 +0000 |
commit | 4b763b54737b0da8f10cfed245637310d4cd80c7 (patch) | |
tree | ea463162932b914ca3bc8966001ef9a2af7da860 /sources/pyside6/libpyside/signalmanager.cpp | |
parent | 7659017d479ce7ddd0d1a13f00a3569e7e33ec54 (diff) |
PySide6: Handle not finding a slot by name
Pick-to: 6.2 5.15
Change-Id: Ie2c652223aaaa853c99d540acebb99f754f34d61
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside6/libpyside/signalmanager.cpp')
-rw-r--r-- | sources/pyside6/libpyside/signalmanager.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sources/pyside6/libpyside/signalmanager.cpp b/sources/pyside6/libpyside/signalmanager.cpp index a3b1ff9b4..67302beab 100644 --- a/sources/pyside6/libpyside/signalmanager.cpp +++ b/sources/pyside6/libpyside/signalmanager.cpp @@ -439,7 +439,12 @@ int SignalManager::SignalManagerPrivate::qtMethodMetacall(QObject *object, QByteArray methodName = method.methodSignature(); methodName.truncate(methodName.indexOf('(')); Shiboken::AutoDecRef pyMethod(PyObject_GetAttrString(pySelf, methodName)); - SignalManager::callPythonMetaMethod(method, args, pyMethod, false); + if (pyMethod.isNull()) { + PyErr_Format(PyExc_AttributeError, "Slot '%s::%s' not found.", + metaObject->className(), method.methodSignature().constData()); + } else { + SignalManager::callPythonMetaMethod(method, args, pyMethod, false); + } } // WARNING Isn't safe to call any metaObject and/or object methods beyond this point // because the object can be deleted inside the called slot. |