diff options
author | Giulio Camuffo <giulio.camuffo@kdab.com> | 2016-10-15 09:29:54 +0200 |
---|---|---|
committer | Giulio Camuffo <giulio.camuffo@kdab.com> | 2016-10-17 09:37:48 +0000 |
commit | 6c92fda9a71f00be801fcfc96f5f503b70fa3f00 (patch) | |
tree | 3c99f6d1bd016ebc77597bf23d5c465dcdbdb5c9 | |
parent | 90123a9f30ee1173c9d64e415fc9b6e27a4227fc (diff) | |
download | qtwayland-6c92fda9a71f00be801fcfc96f5f503b70fa3f00.tar.gz |
Don't return a null QMimeData from the clipboard
The documentation for QClipboard::mimeData() doesn't say that the returned
value can be null, and some clients just dereference that without checking.
So instead return an empty QMimeData.
Change-Id: Ieec3140af4e7f33cde98ed96fd96b2674d0d0f9f
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@hawaiios.org>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
-rw-r--r-- | src/client/qwaylandclipboard.cpp | 6 | ||||
-rw-r--r-- | src/client/qwaylandclipboard_p.h | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/client/qwaylandclipboard.cpp b/src/client/qwaylandclipboard.cpp index a2b7a669..5399e79d 100644 --- a/src/client/qwaylandclipboard.cpp +++ b/src/client/qwaylandclipboard.cpp @@ -54,11 +54,11 @@ QWaylandClipboard::~QWaylandClipboard() QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode) { if (mode != QClipboard::Clipboard) - return 0; + return &m_emptyData; QWaylandInputDevice *inputDevice = mDisplay->currentInputDevice(); if (!inputDevice || !inputDevice->dataDevice()) - return 0; + return &m_emptyData; QWaylandDataSource *source = inputDevice->dataDevice()->selectionSource(); if (source) { @@ -68,7 +68,7 @@ QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode) if (inputDevice->dataDevice()->selectionOffer()) return inputDevice->dataDevice()->selectionOffer()->mimeData(); - return 0; + return &m_emptyData; } void QWaylandClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode) diff --git a/src/client/qwaylandclipboard_p.h b/src/client/qwaylandclipboard_p.h index 02223076..e9344c5f 100644 --- a/src/client/qwaylandclipboard_p.h +++ b/src/client/qwaylandclipboard_p.h @@ -47,6 +47,7 @@ #include <qpa/qplatformclipboard.h> #include <QtCore/QVariant> +#include <QtCore/QMimeData> #include <QtWaylandClient/private/qwaylandclientexport_p.h> @@ -70,6 +71,7 @@ public: private: QWaylandDisplay *mDisplay; + QMimeData m_emptyData; }; } |