diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-02-10 14:49:51 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-02-13 22:11:09 +0100 |
commit | 3a0c33da3d913431391c5b7f4f0e93ea9d2221dc (patch) | |
tree | 56f69f66d616ccce4a3ecb77d2e0a17eb22ed787 /src/widgets/itemviews | |
parent | 86b930f073b6b75790a6af8d021f4daa00f80aae (diff) |
QAbstractItemView: don't access invalid indexes on copy-key
When pressing the copy key the view tried to access the model's data for
the currentIndex() without checking whether the index is valid. This
resulted in debug output to the console, and might break models that
didn't check incoming indexes for validity (or asserted validity).
Fix this by checking whether the currentIndex() is valid before reading
the model's data for that index.
Fixes: QTBUG-106569
Pick-to: 6.5 6.4 6.2 5.15
Change-Id: Ide75fbdfdbd1451ab6d48f07b22136553c5b2468
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index 179e542ccc..4179093e53 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -2368,11 +2368,12 @@ void QAbstractItemView::keyPressEvent(QKeyEvent *event) #if !defined(QT_NO_CLIPBOARD) && !defined(QT_NO_SHORTCUT) if (event == QKeySequence::Copy) { - QVariant variant; - if (d->model) - variant = d->model->data(currentIndex(), Qt::DisplayRole); - if (variant.canConvert<QString>()) - QGuiApplication::clipboard()->setText(variant.toString()); + const QModelIndex index = currentIndex(); + if (index.isValid() && d->model) { + const QVariant variant = d->model->data(index, Qt::DisplayRole); + if (variant.canConvert<QString>()) + QGuiApplication::clipboard()->setText(variant.toString()); + } event->accept(); } #endif |