From ef144f2e30a52ebd1b65d565bf26d73e74b96c0e Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Sat, 11 Nov 2023 17:39:00 +0100 Subject: [PATCH] QStandardItemModel: don't leak in mimeData() When an invalid index is given to QStandardItemModel::mimeData() the function bails out with a warning and returns a nullptr. But the allocated data from QAIM::modelData() was not freed. Pick-to: 6.5 6.2 5.15 Task-number: QTBUG-116532 Change-Id: Ibce9d51ea09d45f1b0eb3ca980aaff141af5bf68 Reviewed-by: Volker Hilsheimer (cherry picked from commit 37048d04172430ee88c9cd8f7589c51a5bbcd5f4) Reviewed-by: Qt Cherry-pick Bot --- src/gui/itemmodels/qstandarditemmodel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp index 64ffdaa3b72..6eee1cdbf46 100644 --- a/src/gui/itemmodels/qstandarditemmodel.cpp +++ b/src/gui/itemmodels/qstandarditemmodel.cpp @@ -3099,13 +3099,13 @@ QStringList QStandardItemModel::mimeTypes() const */ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const { - QMimeData *data = QAbstractItemModel::mimeData(indexes); + std::unique_ptr data(QAbstractItemModel::mimeData(indexes)); if (!data) return nullptr; const QString format = qStandardItemModelDataListMimeType(); if (!mimeTypes().contains(format)) - return data; + return data.release(); QByteArray encoded; QDataStream stream(&encoded, QIODevice::WriteOnly); @@ -3157,7 +3157,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const } data->setData(format, encoded); - return data; + return data.release(); }