summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@kdab.com>2016-10-15 09:29:54 +0200
committerGiulio Camuffo <giulio.camuffo@kdab.com>2016-10-17 09:37:48 +0000
commit6c92fda9a71f00be801fcfc96f5f503b70fa3f00 (patch)
tree3c99f6d1bd016ebc77597bf23d5c465dcdbdb5c9 /src
parent90123a9f30ee1173c9d64e415fc9b6e27a4227fc (diff)
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>
Diffstat (limited to 'src')
-rw-r--r--src/client/qwaylandclipboard.cpp6
-rw-r--r--src/client/qwaylandclipboard_p.h2
2 files changed, 5 insertions, 3 deletions
diff --git a/src/client/qwaylandclipboard.cpp b/src/client/qwaylandclipboard.cpp
index a2b7a6697..5399e79d1 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 02223076e..e9344c5f3 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;
};
}