diff options
author | Brett Stottlemyer <bstottle@ford.com> | 2021-07-10 13:25:46 -0400 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-12 12:36:00 +0000 |
commit | 43eb68918ce001d15592ad518e06dcea35896125 (patch) | |
tree | a4933771daa8da7c2f0ba99675487dad66c1fd35 | |
parent | 8f81f5b1f445530c1f6214b3d16c0b4b8493607b (diff) |
Fix leak in QML ListProperty type
Even if propListTpFree() is called, the memory isn't associated with
userData unless tpInit() succeeds.
Task-number: PYSIDE-1617
Change-Id: I825eb7393088633938e6fe5697308a2e05380e5c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit 2289c796676fb172970489019f4f5315eb3225f4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-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; } |