diff options
author | Giulio Camuffo <giulio.camuffo@jollamobile.com> | 2015-04-30 19:44:58 +0300 |
---|---|---|
committer | Giulio Camuffo <giulio.camuffo@jollamobile.com> | 2015-06-09 08:22:56 +0000 |
commit | 8d691291a77ff0d3d24f3c8858c91c4daa805984 (patch) | |
tree | 6eb7a3695fe96b5fdbfd114426bcaaca0c9fc580 | |
parent | caa58fe9e892cb95d4f990993c8e067b69530ed6 (diff) | |
download | qtwayland-8d691291a77ff0d3d24f3c8858c91c4daa805984.tar.gz qtwayland-8d691291a77ff0d3d24f3c8858c91c4daa805984.tar.bz2 qtwayland-8d691291a77ff0d3d24f3c8858c91c4daa805984.zip |
Fix a corner case freed memory use/crash
QWaylandDisplay::flushRequests() does not only flush them, but also
dispatches the pending events. If we have two wl_data_device.selection
events in the queue we must not dispatch the second one while we are
dealing with the first one because that will replace the data offer
and delete us while we're in QWaylandMimeData::retrieveData_sys().
Change-Id: Ib58ca571867faa2633daa9ec94fe7094df02e9fd
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
-rw-r--r-- | src/client/qwaylanddataoffer.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp index dd28f787..167b647d 100644 --- a/src/client/qwaylanddataoffer.cpp +++ b/src/client/qwaylanddataoffer.cpp @@ -136,7 +136,7 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T } m_dataOffer->receive(mime, pipefd[1]); - m_display->flushRequests(); + wl_display_flush(m_display->wl_display()); close(pipefd[1]); |