Sophie

Sophie

distrib > Mageia > 6 > armv7hl > media > core-updates-src > by-pkgid > 0b5d24ea0c543ddb9f2a81fbc7664751 > files > 1

k3b-2.10.0-9.1.mga6.src.rpm

From d21096fa6e10fe03e524a1b0beeb0b16a0c22681 Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <kde@privat.broulik.de>
Date: Sat, 11 Feb 2017 17:03:46 +0100
Subject: [PATCH] Fix adding files to data project

In cf01ff3159dbddb97e0e67246dee16441a64984a this broke by randomly using QSharedPointer in the wrong way.
There was only this one item being referenced, once it fell out of scope it got deleted, and then by the
time the event loop returned and the queued invocation was processed, the object was already gone.

Just use WA_DeleteOnClose which will clean up nicely once we're done.

BUG: 375016

Differential Revision: https://phabricator.kde.org/D4571
---
 src/projects/k3bdataurladdingdialog.cpp | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/projects/k3bdataurladdingdialog.cpp b/src/projects/k3bdataurladdingdialog.cpp
index 28986e9..9ad6976 100644
--- a/src/projects/k3bdataurladdingdialog.cpp
+++ b/src/projects/k3bdataurladdingdialog.cpp
@@ -50,7 +50,6 @@
 #include <QtWidgets/QLabel>
 #include <QtWidgets/QLayout>
 #include <QtWidgets/QInputDialog>
-#include <QSharedPointer>
 
 #include <unistd.h>
 
@@ -144,8 +143,9 @@ void K3b::DataUrlAddingDialog::addUrls( const QList<QUrl>& urls,
                                      QWidget* parent )
 {
     if( !urls.isEmpty() ) {
-        QSharedPointer<DataUrlAddingDialog> dlgPtr = QSharedPointer<DataUrlAddingDialog>(new DataUrlAddingDialog( urls, dir, parent ));
-        QMetaObject::invokeMethod( dlgPtr.data(), "slotStartAddUrls", Qt::QueuedConnection );
+        auto *dlg = new DataUrlAddingDialog( urls, dir, parent );
+        dlg->setAttribute(Qt::WA_DeleteOnClose);
+        QMetaObject::invokeMethod( dlg, "slotStartAddUrls", Qt::QueuedConnection );
     }
 }
 
@@ -155,8 +155,9 @@ void K3b::DataUrlAddingDialog::moveItems( const QList<K3b::DataItem*>& items,
                                        QWidget* parent )
 {
     if( !items.isEmpty() ) {
-        QSharedPointer<DataUrlAddingDialog> dlgPtr = QSharedPointer<DataUrlAddingDialog>(new DataUrlAddingDialog( items, dir, false, parent ));
-        QMetaObject::invokeMethod( dlgPtr.data(), "slotStartCopyMoveItems", Qt::QueuedConnection );
+        auto *dlg = new DataUrlAddingDialog( items, dir, false, parent );
+        dlg->setAttribute(Qt::WA_DeleteOnClose);
+        QMetaObject::invokeMethod( dlg, "slotStartCopyMoveItems", Qt::QueuedConnection );
     }
 }
 
@@ -166,8 +167,9 @@ void K3b::DataUrlAddingDialog::copyItems( const QList<K3b::DataItem*>& items,
                                        QWidget* parent )
 {
     if( !items.isEmpty() ) {
-        QSharedPointer<DataUrlAddingDialog> dlgPtr = QSharedPointer<DataUrlAddingDialog>(new DataUrlAddingDialog( items, dir, true, parent ));
-        QMetaObject::invokeMethod( dlgPtr.data(), "slotStartCopyMoveItems", Qt::QueuedConnection );
+        auto *dlg = new DataUrlAddingDialog( items, dir, true, parent );
+        dlg->setAttribute(Qt::WA_DeleteOnClose);
+        QMetaObject::invokeMethod( dlg, "slotStartCopyMoveItems", Qt::QueuedConnection );
     }
 }