aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
diff options
context:
space:
mode:
authorBrett Stottlemyer <bstottle@ford.com>2021-07-10 13:25:46 -0400
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-07-12 10:25:12 +0000
commit2289c796676fb172970489019f4f5315eb3225f4 (patch)
tree0c6a5684d95015f31f0d4d6a4158039e0d879174 /sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
parent38376cdb3bfeb69d34ca40090994e83600f9710b (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.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;
}