From d8ca812879ad70cd2aa914ea76cd529786deadc6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 17 Apr 2025 14:49:57 +0200 Subject: 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 --- sources/pyside6/libpyside/pysidesignal.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'sources/pyside6/libpyside/pysidesignal.cpp') 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 #include #include +#include #include #include #include @@ -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()); -- cgit v1.2.3