From 93d3d0441baa449c4417a124aa0532dd5dfd9c5f Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 22 Nov 2018 08:46:33 +0100 Subject: [PATCH] Account: Fix crash when deleting an account We should not have request parented to the account, otherwise we might get a loop on the deletion order. Issue #6893 --- src/libsync/abstractnetworkjob.cpp | 3 +++ src/libsync/account.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libsync/abstractnetworkjob.cpp b/src/libsync/abstractnetworkjob.cpp index 6773bd2e53..fe529829ce 100644 --- a/src/libsync/abstractnetworkjob.cpp +++ b/src/libsync/abstractnetworkjob.cpp @@ -55,6 +55,9 @@ AbstractNetworkJob::AbstractNetworkJob(AccountPtr account, const QString &path, , _path(path) , _redirectCount(0) { + // Since we hold a QSharedPointer to the account, this makes no sense. (issue #6893) + ASSERT(account != parent); + _timer.setSingleShot(true); _timer.setInterval((httpTimeout ? httpTimeout : 300) * 1000); // default to 5 minutes. connect(&_timer, &QTimer::timeout, this, &AbstractNetworkJob::slotTimeout); diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 426b488cb3..abfe8ec841 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -262,7 +262,7 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, SimpleNetworkJob *Account::sendRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data) { - auto job = new SimpleNetworkJob(sharedFromThis(), this); + auto job = new SimpleNetworkJob(sharedFromThis()); job->startRequest(verb, url, req, data); return job; }