aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Stottlemyer <bstottle@ford.com>2021-07-10 13:25:46 -0400
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-12 12:36:00 +0000
commit43eb68918ce001d15592ad518e06dcea35896125 (patch)
treea4933771daa8da7c2f0ba99675487dad66c1fd35
parent8f81f5b1f445530c1f6214b3d16c0b4b8493607b (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.cpp3
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;
}