aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysidesignal.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-10-21 10:48:46 +0200
committerChristian Tismer <tismer@stackless.com>2022-10-25 11:20:14 +0200
commit9a4dc0d17c7f8eef7ed3e34751d8d519fad3c69b (patch)
tree53572be99e64b8bd180f10fcdbc9dafb6f7c892a /sources/pyside6/libpyside/pysidesignal.cpp
parent9843a5178e7631866398e0c37165ab25be116549 (diff)
signals: Fix a bug when wrong keyword args are passed
When a wrong argument is passed, the signalTpInit function is left early, leaving self.data uninitialized in the signal structure. The function signalFree then crashes. Task-number: PYSIDE-1603 Change-Id: I97549092198fab206d37643716af3db2d8201cde Pick-to: 6.3 6.4 Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pysidesignal.cpp')
-rw-r--r--sources/pyside6/libpyside/pysidesignal.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp
index 78587c1c3..8a32bf005 100644
--- a/sources/pyside6/libpyside/pysidesignal.cpp
+++ b/sources/pyside6/libpyside/pysidesignal.cpp
@@ -276,9 +276,11 @@ static void signalFree(void *vself)
{
auto pySelf = reinterpret_cast<PyObject *>(vself);
auto self = reinterpret_cast<PySideSignal *>(vself);
- delete self->data->signalArguments;
- delete self->data;
- self->data = nullptr;
+ if (self->data) {
+ delete self->data->signalArguments;
+ delete self->data;
+ self->data = nullptr;
+ }
Py_XDECREF(self->homonymousMethod);
self->homonymousMethod = nullptr;