mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-24 13:25:52 +03:00
Fix crash when finishing the wizard
As shown on this backtrace: =13334== Invalid read of size 8 QCoreApplication::postEvent(QObject*,QEvent*, int) Mirall::ownCloudInfo::slotReplyFinished() [...] ==13334== Address 0x1afb91d8 is 8 bytes inside a block of size 16 free'd operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) QNetworkAccessManager::~QNetworkAccessManager() Mirall::MirallAccessManager::~MirallAccessManager() [...] Mirall::ownCloudInfo::setNetworkAccessManager(QNetworkAccessManager*) Mirall::ownCloudInfo::setCustomConfigHandle(QString const&) Mirall::OwncloudSetupWizard::slotAssistantFinished(int) [...] Mirall::OwncloudWizard::basicSetupFinished(int) Mirall::OwncloudWizard::slotCurrentPageChanged(int) [...] QWizard::currentIdChanged(int) (in Mirall::OwncloudWizard::successfulStep() Mirall::OwncloudSetupWizard::finalizeSetup(bool) Mirall::OwncloudSetupWizard::slotAuthCheckReply(QString const&, [...] Mirall::ownCloudInfo::ownCloudDirExists(QString const&, QNetworkReply*) Mirall::ownCloudInfo::slotReplyFinished() The QNetworkManager was destroyed in a slot connected to a signal emited by slotReplyFinished, but we did not finish with the QNetworkReply yet. Fix the crash by using QueuedConnection so the QNetworkAccessManager is not destroyed before slotReplyFinished has completed.
This commit is contained in:
parent
3a1f04ac2d
commit
1a7c89326b
1 changed files with 4 additions and 1 deletions
|
@ -47,8 +47,11 @@ OwncloudSetupWizard::OwncloudSetupWizard(QObject* parent) :
|
|||
this, SLOT(slotConnectToOCUrl( const QString& )));
|
||||
connect( _ocWizard, SIGNAL(createLocalAndRemoteFolders(QString, QString)),
|
||||
this, SLOT(slotCreateLocalAndRemoteFolders(QString, QString)));
|
||||
/* basicSetupFinished might be called from a reply from the network.
|
||||
slotAssistantFinished might destroy the temporary QNetworkAccessManager.
|
||||
Therefore Qt::QueuedConnection is required */
|
||||
connect( _ocWizard, SIGNAL(basicSetupFinished(int)),
|
||||
this, SLOT(slotAssistantFinished(int)));
|
||||
this, SLOT(slotAssistantFinished(int)), Qt::QueuedConnection);
|
||||
connect( _ocWizard, SIGNAL(clearPendingRequests()),
|
||||
this, SLOT(slotClearPendingRequests()));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue