summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-05-19 19:45:53 +0300
committerJørgen Lind <jorgen.lind@nokia.com>2012-05-21 08:38:55 +0200
commit91982e550684777a2036ff0964d410d0dc9f2f9b (patch)
tree3820718eb0eb2e9e7cbe01f2abd4a5fe09ce6360 /src
parent42f6dd89261ef94099f05f9f813a25d0cce8d8ac (diff)
Fix clipboard crash in clients with weston
The offer passed to selection() can be null. This case was not handled before because it never happens with qt-compositor. Copy/paste is still not ok with weston but at least the apps won't crash. Change-Id: I91d529e9d8b179724637d05bb9b95ec5843bda2b Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp b/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp
index 81972e83e..0975d24d6 100644
--- a/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp
+++ b/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp
@@ -170,6 +170,7 @@ void QWaylandDataDeviceManager::selection(void *data,
struct wl_data_offer *id)
{
Q_UNUSED(wl_data_device);
+
QWaylandDataDeviceManager *handler = static_cast<QWaylandDataDeviceManager *>(data);
QWaylandDataOffer *mime = handler->m_selection_data_offer;
delete mime;
@@ -177,8 +178,12 @@ void QWaylandDataDeviceManager::selection(void *data,
delete transfer_source;
handler->m_selection_data_source = 0;
- mime = static_cast<QWaylandDataOffer *>(wl_data_offer_get_user_data(id));
- handler->m_selection_data_offer = mime;
+ if (id) {
+ mime = static_cast<QWaylandDataOffer *>(wl_data_offer_get_user_data(id));
+ handler->m_selection_data_offer = mime;
+ } else {
+ handler->m_selection_data_offer = 0;
+ }
QGuiApplicationPrivate::platformIntegration()->clipboard()->emitChanged(QClipboard::Clipboard);
}