From: Christian Kamm Date: Wed, 11 Sep 2019 09:03:27 +0000 (+0200) Subject: Don't store pointer to local job X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~468^2~182 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=53a217d4e4850177a8baeb117e26348d66947ffa;p=nextcloud-desktop.git Don't store pointer to local job There were crashes in the QPointer assignment. Possibly the thread pool is done with the job and deletes it before the assignment is done. --- diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index f1dfd903c..4f162e18f 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -52,7 +52,7 @@ void ProcessDirectoryJob::start() } if (_queryLocal == NormalQuery) { - _localJob = startAsyncLocalQuery(); + startAsyncLocalQuery(); } else { _localQueryDone = true; } @@ -1430,7 +1430,7 @@ DiscoverySingleDirectoryJob *ProcessDirectoryJob::startAsyncServerQuery() return serverJob; } -DiscoverySingleLocalDirectoryJob *ProcessDirectoryJob::startAsyncLocalQuery() +void ProcessDirectoryJob::startAsyncLocalQuery() { QString localPath = _discoveryData->_localDir + _currentFolder._local; auto localJob = new DiscoverySingleLocalDirectoryJob(_discoveryData->_account, localPath, _discoveryData->_syncOptions._vfs.data(), this); @@ -1477,9 +1477,7 @@ DiscoverySingleLocalDirectoryJob *ProcessDirectoryJob::startAsyncLocalQuery() }); QThreadPool *pool = QThreadPool::globalInstance(); - pool->start(localJob); - - return localJob; + pool->start(localJob); // QThreadPool takes ownership } diff --git a/src/libsync/discovery.h b/src/libsync/discovery.h index e731562b2..6b165421e 100644 --- a/src/libsync/discovery.h +++ b/src/libsync/discovery.h @@ -206,7 +206,7 @@ private: * * Fills _localNormalQueryEntries. */ - DiscoverySingleLocalDirectoryJob *startAsyncLocalQuery(); + void startAsyncLocalQuery(); /** Sets _pinState, the directory's pin state @@ -243,8 +243,6 @@ private: RemotePermissions _rootPermissions; QPointer _serverJob; - QPointer _localJob; - /** Number of currently running async jobs. *