diff options
author | Brett Stottlemyer <bstottle@ford.com> | 2021-07-10 13:25:46 -0400 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-07-12 10:25:12 +0000 |
commit | 2289c796676fb172970489019f4f5315eb3225f4 (patch) | |
tree | 0c6a5684d95015f31f0d4d6a4158039e0d879174 /sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp | |
parent | 38376cdb3bfeb69d34ca40090994e83600f9710b (diff) |
Fix leak in QML ListProperty type
Even if propListTpFree() is called, the memory isn't associated with
userData unless tpInit() succeeds.
Pick-to: 6.1
Task-number: PYSIDE-1617
Change-Id: I825eb7393088633938e6fe5697308a2e05380e5c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp')
-rw-r--r-- | sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp b/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp index 6bcc1dccc..ab098c119 100644 --- a/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp +++ b/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp @@ -302,6 +302,7 @@ static int propListTpInit(PyObject *self, PyObject *args, PyObject *kwds) &data->clear, &data->replace, &data->removeLast)) { + delete data; return -1; } @@ -311,6 +312,7 @@ static int propListTpInit(PyObject *self, PyObject *args, PyObject *kwds) if (!PySequence_Contains(data->type->tp_mro, reinterpret_cast<PyObject *>(qobjectType))) { PyErr_Format(PyExc_TypeError, "A type inherited from %s expected, got %s.", qobjectType->tp_name, data->type->tp_name); + delete data; return -1; } @@ -321,6 +323,7 @@ static int propListTpInit(PyObject *self, PyObject *args, PyObject *kwds) (data->replace && data->replace != Py_None && !PyCallable_Check(data->replace)) || (data->removeLast && data->removeLast != Py_None && !PyCallable_Check(data->removeLast))) { PyErr_Format(PyExc_TypeError, "Non-callable parameter given"); + delete data; return -1; } |