diff options
author | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2014-10-10 09:57:31 +0200 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2014-10-10 16:50:35 +0200 |
commit | 65c542bc87bd40da90c63e322d1275045de19bff (patch) | |
tree | 41fccedffafef195ffd9b6ac7b1e0417a66b332f /src/plugins/platforms/ios/qiosclipboard.mm | |
parent | 7c90778487fee7c53e27766ac895c620ad566049 (diff) | |
download | qtbase-65c542bc87bd40da90c63e322d1275045de19bff.tar.gz |
qiosclipboard: take ownership over mime data
QClipboard is documented to take ownership over
the mime data set with "setMimeData" and the value
returned by "mimeData". So we need to implement
this to avoid memory leaks.
Change-Id: Ieb3a17368ed3a698c29a7f92c8ee87a0cca86b46
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/ios/qiosclipboard.mm')
-rw-r--r-- | src/plugins/platforms/ios/qiosclipboard.mm | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/plugins/platforms/ios/qiosclipboard.mm b/src/plugins/platforms/ios/qiosclipboard.mm index e18ad53b2c..5ed6d3be62 100644 --- a/src/plugins/platforms/ios/qiosclipboard.mm +++ b/src/plugins/platforms/ios/qiosclipboard.mm @@ -194,10 +194,17 @@ QIOSClipboard::QIOSClipboard() { } +QIOSClipboard::~QIOSClipboard() +{ + qDeleteAll(m_mimeData); +} + QMimeData *QIOSClipboard::mimeData(QClipboard::Mode mode) { Q_ASSERT(supportsMode(mode)); - return new QIOSMimeData(mode); + if (!m_mimeData.contains(mode)) + return *m_mimeData.insert(mode, new QIOSMimeData(mode)); + return m_mimeData[mode]; } void QIOSClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode) @@ -209,6 +216,8 @@ void QIOSClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode) pb.items = [NSArray array]; return; } + + mimeData->deleteLater(); NSMutableDictionary *pbItem = [NSMutableDictionary dictionaryWithCapacity:mimeData->formats().size()]; foreach (const QString &mimeType, mimeData->formats()) { |