From 2289c796676fb172970489019f4f5315eb3225f4 Mon Sep 17 00:00:00 2001 From: Brett Stottlemyer Date: Sat, 10 Jul 2021 13:25:46 -0400 Subject: 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 --- sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp') 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(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; } -- cgit v1.2.3