aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysidesignal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/libpyside/pysidesignal.cpp')
-rw-r--r--sources/pyside6/libpyside/pysidesignal.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp
index 291de73d8..17071cd1d 100644
--- a/sources/pyside6/libpyside/pysidesignal.cpp
+++ b/sources/pyside6/libpyside/pysidesignal.cpp
@@ -185,7 +185,8 @@ static PyObject *signalInstanceRepr(PyObject *obSelf)
auto *self = reinterpret_cast<PySideSignalInstance *>(obSelf);
auto *typeName = Py_TYPE(obSelf)->tp_name;
return Shiboken::String::fromFormat("<%s %s at %p>", typeName,
- self->d->signature.constData(), obSelf);
+ self->d ? self->d->signature.constData()
+ : "(no signature)", obSelf);
}
static PyMethodDef SignalInstance_methods[] = {
@@ -436,6 +437,10 @@ static PyObject *signalInstanceConnect(PyObject *self, PyObject *args, PyObject
return nullptr;
PySideSignalInstance *source = reinterpret_cast<PySideSignalInstance *>(self);
+ if (!source->d) {
+ PyErr_Format(PyExc_RuntimeError, "cannot connect uninitialized SignalInstance");
+ return nullptr;
+ }
Shiboken::AutoDecRef pyArgs(PyList_New(0));
bool match = false;
@@ -552,6 +557,10 @@ static int argCountInSignature(const char *signature)
static PyObject *signalInstanceEmit(PyObject *self, PyObject *args)
{
PySideSignalInstance *source = reinterpret_cast<PySideSignalInstance *>(self);
+ if (!source->d) {
+ PyErr_Format(PyExc_RuntimeError, "cannot emit uninitialized SignalInstance");
+ return nullptr;
+ }
// PYSIDE-2201: Check if the object has vanished meanwhile.
// Tried to revive it without exception, but this gives problems.
@@ -625,6 +634,10 @@ static PyObject *signalInstanceGetItem(PyObject *self, PyObject *key)
static PyObject *signalInstanceDisconnect(PyObject *self, PyObject *args)
{
auto source = reinterpret_cast<PySideSignalInstance *>(self);
+ if (!source->d) {
+ PyErr_Format(PyExc_RuntimeError, "cannot disconnect uninitialized SignalInstance");
+ return nullptr;
+ }
Shiboken::AutoDecRef pyArgs(PyList_New(0));
PyObject *slot = Py_None;