[Pkg-owncloud-commits] [owncloud-client] 305/484: Sharing: Fix crash with share deletion #4111

Sandro Knauß hefee-guest at moszumanska.debian.org
Wed Dec 16 00:37:56 UTC 2015


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit 05d1cc9a94d03dfbaac99942db1b8a8e2040178c
Author: Christian Kamm <mail at ckamm.de>
Date:   Wed Nov 11 13:28:20 2015 +0100

    Sharing: Fix crash with share deletion #4111
    
    The problem was that Share could be deleted *before*
    the OcsShareJob itself finished. Since Share was the
    parent of the network job, its object would be deleted
    too early.
    
    In general, it's unnecessary to assign parents to the OcsJobs
    because they delete themselves when finished.
---
 src/gui/ocsjob.cpp       |  5 ++---
 src/gui/ocsjob.h         |  2 +-
 src/gui/ocsshareejob.cpp |  4 ++--
 src/gui/ocsshareejob.h   |  2 +-
 src/gui/ocssharejob.cpp  |  4 ++--
 src/gui/ocssharejob.h    |  2 +-
 src/gui/share.cpp        | 16 ++++++++--------
 src/gui/sharee.cpp       |  2 +-
 8 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/src/gui/ocsjob.cpp b/src/gui/ocsjob.cpp
index 5b0b0ad..4ab1473 100644
--- a/src/gui/ocsjob.cpp
+++ b/src/gui/ocsjob.cpp
@@ -20,8 +20,8 @@
 
 namespace OCC {
 
-OcsJob::OcsJob(AccountPtr account, QObject* parent)
-: AbstractNetworkJob(account, "", parent)
+OcsJob::OcsJob(AccountPtr account)
+: AbstractNetworkJob(account, "")
 {
     _passStatusCodes.append(100);
     setIgnoreCredentialFailure(true);
@@ -109,7 +109,6 @@ bool OcsJob::finished()
     } else {
         emit jobFinished(json);
     }
-    deleteLater();
     return true;
 }
 
diff --git a/src/gui/ocsjob.h b/src/gui/ocsjob.h
index 344b004..dcd2058 100644
--- a/src/gui/ocsjob.h
+++ b/src/gui/ocsjob.h
@@ -38,7 +38,7 @@ class OcsJob : public AbstractNetworkJob {
 
 protected:
 
-    explicit OcsJob(AccountPtr account, QObject* parent = 0);
+    explicit OcsJob(AccountPtr account);
 
     /**
      * Set the verb for the job
diff --git a/src/gui/ocsshareejob.cpp b/src/gui/ocsshareejob.cpp
index d621001..60aa0c9 100644
--- a/src/gui/ocsshareejob.cpp
+++ b/src/gui/ocsshareejob.cpp
@@ -15,8 +15,8 @@
 
 namespace OCC {
 
-OcsShareeJob::OcsShareeJob(AccountPtr account, QObject *parent)
-: OcsJob(account, parent)
+OcsShareeJob::OcsShareeJob(AccountPtr account)
+: OcsJob(account)
 {
     setPath("ocs/v1.php/apps/files_sharing/api/v1/sharees");
     connect(this, SIGNAL(jobFinished(QVariantMap)), SLOT(jobDone(QVariantMap)));
diff --git a/src/gui/ocsshareejob.h b/src/gui/ocsshareejob.h
index 208d0ff..c8a49fd 100644
--- a/src/gui/ocsshareejob.h
+++ b/src/gui/ocsshareejob.h
@@ -29,7 +29,7 @@ class OcsShareeJob : public OcsJob {
     Q_OBJECT
 public:
 
-    explicit OcsShareeJob(AccountPtr account, QObject *parent = 0);
+    explicit OcsShareeJob(AccountPtr account);
 
     /**
      * Get a list of sharees
diff --git a/src/gui/ocssharejob.cpp b/src/gui/ocssharejob.cpp
index 37ca5aa..93c0c1d 100644
--- a/src/gui/ocssharejob.cpp
+++ b/src/gui/ocssharejob.cpp
@@ -20,8 +20,8 @@
 
 namespace OCC {
 
-OcsShareJob::OcsShareJob(AccountPtr account, QObject* parent)
-: OcsJob(account, parent)
+OcsShareJob::OcsShareJob(AccountPtr account)
+: OcsJob(account)
 {
     setPath("ocs/v1.php/apps/files_sharing/api/v1/shares");
     connect(this, SIGNAL(jobFinished(QVariantMap)), this, SLOT(jobDone(QVariantMap)));
diff --git a/src/gui/ocssharejob.h b/src/gui/ocssharejob.h
index bc65b53..9f018aa 100644
--- a/src/gui/ocssharejob.h
+++ b/src/gui/ocssharejob.h
@@ -36,7 +36,7 @@ public:
     /**
      * Constructor for new shares or listing of shares
      */
-    explicit OcsShareJob(AccountPtr account, QObject *parent = 0);
+    explicit OcsShareJob(AccountPtr account);
 
     /**
      * Get all the shares
diff --git a/src/gui/share.cpp b/src/gui/share.cpp
index e5525a4..f108404 100644
--- a/src/gui/share.cpp
+++ b/src/gui/share.cpp
@@ -52,7 +52,7 @@ QSharedPointer<Sharee> Share::getShareWith() const
 
 void Share::setPermissions(Permissions permissions)
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPermissionsSet(QVariantMap, QVariant)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
     job->setPermissions(getId(), permissions);
@@ -71,7 +71,7 @@ Share::Permissions Share::getPermissions() const
 
 void Share::deleteShare()
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotDeleted()));
     connect(job, SIGNAL(ocsError(int, const QString &)), SLOT(slotOcsError(int, const QString &)));
     job->deleteShare(getId());
@@ -125,7 +125,7 @@ bool LinkShare::getPublicUpload()
 
 void LinkShare::setPublicUpload(bool publicUpload)
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPublicUploadSet(QVariantMap, QVariant)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
     job->setPublicUpload(getId(), publicUpload);
@@ -144,7 +144,7 @@ void LinkShare::slotPublicUploadSet(const QVariantMap&, const QVariant &value)
 
 void LinkShare::setPassword(const QString &password)
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPasswordSet(QVariantMap, QVariant)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
     job->setPassword(getId(), password);
@@ -158,7 +158,7 @@ void LinkShare::slotPasswordSet(const QVariantMap&, const QVariant &value)
 
 void LinkShare::setExpireDate(const QDate &date)
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotExpireDateSet(QVariantMap, QVariant)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
     job->setExpireDate(getId(), date);
@@ -180,7 +180,7 @@ ShareManager::ShareManager(AccountPtr account, QObject *parent)
 void ShareManager::createLinkShare(const QString &path,
                                    const QString &password)
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotLinkShareCreated(QVariantMap)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
     job->createLinkShare(path, password);
@@ -212,7 +212,7 @@ void ShareManager::createShare(const QString& path,
                                const QString shareWith,
                                const Share::Permissions permissions)
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotShareCreated(QVariantMap)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
     job->createShare(path, shareType, shareWith, permissions);
@@ -229,7 +229,7 @@ void ShareManager::slotShareCreated(const QVariantMap &reply)
 
 void ShareManager::fetchShares(const QString &path)
 {
-    OcsShareJob *job = new OcsShareJob(_account, this);
+    OcsShareJob *job = new OcsShareJob(_account);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotSharesFetched(QVariantMap)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
     job->getShares(path);
diff --git a/src/gui/sharee.cpp b/src/gui/sharee.cpp
index cfb1dec..491f54c 100644
--- a/src/gui/sharee.cpp
+++ b/src/gui/sharee.cpp
@@ -69,7 +69,7 @@ ShareeModel::ShareeModel(AccountPtr account,
 
 void ShareeModel::fetch()
 {
-    OcsShareeJob *job = new OcsShareeJob(_account, this);
+    OcsShareeJob *job = new OcsShareeJob(_account);
     connect(job, SIGNAL(shareeJobFinished(QVariantMap)), SLOT(shareesFetched(QVariantMap)));
     job->getSharees(_search, _type, 1, 50);
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list