From 530f9856519e58c7793095a5ac92d49b192d3b0b Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Wed, 12 Mar 2014 15:50:36 +0100 Subject: [XCB] Fix crash in QML drag-and-drop Use QPointer to make sure that we are not trying to destroy already deleted object. Task-number: QTBUG-35702 Change-Id: Ib746996787488e636f25e6ea5be0571607ee2ded Reviewed-by: Laszlo Agocs Reviewed-by: Friedemann Kleint --- src/plugins/platforms/xcb/qxcbdrag.cpp | 3 ++- src/plugins/platforms/xcb/qxcbdrag.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp index e931b96b88..4f0f57c375 100644 --- a/src/plugins/platforms/xcb/qxcbdrag.cpp +++ b/src/plugins/platforms/xcb/qxcbdrag.cpp @@ -1044,7 +1044,8 @@ void QXcbDrag::timerEvent(QTimerEvent* e) - showing dialog box on drop event where user's response takes more time than XdndDropTransactionTimeout (QTBUG-14493) - dnd takes unusually long time to process data */ - t.drag->deleteLater(); + if (t.drag) + t.drag->deleteLater(); transactions.removeAt(i--); } else { stopTimer = false; diff --git a/src/plugins/platforms/xcb/qxcbdrag.h b/src/plugins/platforms/xcb/qxcbdrag.h index 5648f70d9e..d94c42696f 100644 --- a/src/plugins/platforms/xcb/qxcbdrag.h +++ b/src/plugins/platforms/xcb/qxcbdrag.h @@ -157,7 +157,7 @@ private: xcb_window_t proxy_target; QWindow *targetWindow; // QWidget *embedding_widget; - QDrag *drag; + QPointer drag; QTime time; }; QList transactions; -- cgit v1.2.3