From d55db6dd535149adca77a5d5a1bb61823aee94b5 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Thu, 28 Nov 2013 14:42:56 +0100 Subject: Cocoa: avoid a crash in QCocoaDrag NSEvent needs to be copied. Reference: http://lists.apple.com/archives/cocoa-dev/2007/Dec/msg00678.html Task-number: QTBUG-33533 Change-Id: I73709545573e59aab6875a8c3dd903cb171e858f Reviewed-by: Jake Petroules Reviewed-by: Gabriel de Dietrich --- src/plugins/platforms/cocoa/qcocoadrag.h | 1 + src/plugins/platforms/cocoa/qcocoadrag.mm | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/cocoa/qcocoadrag.h b/src/plugins/platforms/cocoa/qcocoadrag.h index 80259df600..6810a21944 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.h +++ b/src/plugins/platforms/cocoa/qcocoadrag.h @@ -55,6 +55,7 @@ class QCocoaDrag : public QPlatformDrag { public: QCocoaDrag(); + virtual ~QCocoaDrag(); virtual QMimeData *platformDropData(); virtual Qt::DropAction drag(QDrag *m_drag); diff --git a/src/plugins/platforms/cocoa/qcocoadrag.mm b/src/plugins/platforms/cocoa/qcocoadrag.mm index a37552d844..a22830f64e 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.mm +++ b/src/plugins/platforms/cocoa/qcocoadrag.mm @@ -53,9 +53,15 @@ QCocoaDrag::QCocoaDrag() : m_lastView = 0; } +QCocoaDrag::~QCocoaDrag() +{ + [m_lastEvent release]; +} + void QCocoaDrag::setLastMouseEvent(NSEvent *event, NSView *view) { - m_lastEvent = event; + [m_lastEvent release]; + m_lastEvent = [event copy]; m_lastView = view; } -- cgit v1.2.3