aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysidesignal.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2025-04-17 14:49:57 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2025-05-07 21:10:45 +0200
commitd8ca812879ad70cd2aa914ea76cd529786deadc6 (patch)
tree97140467bca8c9bcda6f492ecb8598c9db136179 /sources/pyside6/libpyside/pysidesignal.cpp
parentcffe2bc71d8e5d88efb879e6fe68c730e547fc4d (diff)
libshiboken: Add utility class for stashing Python errors
It encapsulates fetching/restoring errors and uses the old or new exception API depending on version. Task-number: PYSIDE-3067 Change-Id: I6e39d92c7e79fed864b364a90c5bd5b474a41ed6 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside6/libpyside/pysidesignal.cpp')
-rw-r--r--sources/pyside6/libpyside/pysidesignal.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp
index 5058e3517..a4d1b66b5 100644
--- a/sources/pyside6/libpyside/pysidesignal.cpp
+++ b/sources/pyside6/libpyside/pysidesignal.cpp
@@ -16,6 +16,7 @@
#include <pep384ext.h>
#include <sbkconverter.h>
#include <sbkenum.h>
+#include <sbkerrors.h>
#include <sbkstaticstrings.h>
#include <sbkstring.h>
#include <sbktypefactory.h>
@@ -667,13 +668,9 @@ static PyObject *signalInstanceGetItem(PyObject *self, PyObject *key)
static inline void warnDisconnectFailed(PyObject *aSlot, const QByteArray &signature)
{
if (PyErr_Occurred() != nullptr) { // avoid "%S" invoking str() when an error is set.
- PyObject *exc{};
- PyObject *inst{};
- PyObject *tb{};
- PyErr_Fetch(&exc, &inst, &tb);
+ Shiboken::Errors::Stash errorStash;
PyErr_WarnFormat(PyExc_RuntimeWarning, 0, "Failed to disconnect (%s) from signal \"%s\".",
Py_TYPE(aSlot)->tp_name, signature.constData());
- PyErr_Restore(exc, inst, tb);
} else {
PyErr_WarnFormat(PyExc_RuntimeWarning, 0, "Failed to disconnect (%S) from signal \"%s\".",
aSlot, signature.constData());