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.6 6.5 6.2 5.15
Task-number: QTBUG-116532
Change-Id: Ibce9d51ea09d45f1b0eb3ca980aaff141af5bf68
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
bb10
Christian Ehrlicher 2023-11-11 17:39:00 +01:00
parent ab4bb5077c
commit 37048d0417
1 changed files with 3 additions and 3 deletions

View File

@ -3101,13 +3101,13 @@ QStringList QStandardItemModel::mimeTypes() const
*/
QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
{
QMimeData *data = QAbstractItemModel::mimeData(indexes);
std::unique_ptr<QMimeData> 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);
@ -3159,7 +3159,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
}
data->setData(format, encoded);
return data;
return data.release();
}