diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-10-21 10:48:46 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-10-25 14:17:46 +0000 |
commit | 55490099727578539c58d6b995ab49a9682fefc1 (patch) | |
tree | de9b6f64130a939be8fcd7cf8f9bde9ded213b55 | |
parent | 04d15b1d1245a96560aa271c854f26e9396082fa (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
Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit 9a4dc0d17c7f8eef7ed3e34751d8d519fad3c69b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | sources/pyside6/libpyside/pysidesignal.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp index d804987cd..a365d351f 100644 --- a/sources/pyside6/libpyside/pysidesignal.cpp +++ b/sources/pyside6/libpyside/pysidesignal.cpp @@ -271,9 +271,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; |