Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixed|FS|libcore: Crash when disconnecting from server
The server’s remote files were unmounted incorrectly, causing a folder to be destroyed twice.
  • Loading branch information
skyjake committed Nov 22, 2018
1 parent cf4aa17 commit ba7dfd6
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
9 changes: 6 additions & 3 deletions doomsday/sdk/libcore/src/filesys/remote/link.cpp
Expand Up @@ -128,10 +128,13 @@ Link::~Link()
{
d->cancelAllQueries();

// Normally, the local folder will be deleted when the link is disconnected.
if (auto *folder = FS::tryLocate<Folder>(d->localRootPath))
if (d->state != Deinitialized)
{
delete folder;
// Normally, the local folder will be deleted when the link is disconnected.
if (auto *folder = FS::tryLocate<Folder>(d->localRootPath))
{
delete folder;
}
}
}

Expand Down
7 changes: 4 additions & 3 deletions doomsday/sdk/libshell/src/packagedownloader.cpp
Expand Up @@ -296,13 +296,14 @@ void PackageDownloader::unmountServerRepository()
{
d->clearDownloads();
d->unlinkRemotePackages();
filesys::RemoteFeedRelay::get().removeRepository(d->fileRepository);
d->fileRepository.clear();
d->isCancelled = false;

if (Folder *remoteFiles = FS::tryLocate<Folder>(PATH_REMOTE_SERVER))
{
trash(remoteFiles);
}
filesys::RemoteFeedRelay::get().removeRepository(d->fileRepository);
d->fileRepository.clear();
d->isCancelled = false;
}

void PackageDownloader::download(StringList packageIds, std::function<void ()> callback)
Expand Down

0 comments on commit ba7dfd6

Please sign in to comment.