From b74d7a6861dbb5d0fafec0e6587deb7637b0ab12 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Sat, 28 May 2016 01:18:37 +0600 Subject: CLOUD: Fix Requests destructors I forgot to delete callbacks! --- backends/cloud/downloadrequest.h | 5 ++++- backends/cloud/folderdownloadrequest.cpp | 7 +++++++ backends/cloud/folderdownloadrequest.h | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) (limited to 'backends/cloud') diff --git a/backends/cloud/downloadrequest.h b/backends/cloud/downloadrequest.h index 4ea85760ae..c9c243be44 100644 --- a/backends/cloud/downloadrequest.h +++ b/backends/cloud/downloadrequest.h @@ -40,7 +40,10 @@ class DownloadRequest: public Networking::Request { void finishBool(bool success); public: DownloadRequest(Storage *storage, Storage::BoolCallback callback, Common::String remoteFile, Common::DumpFile *dumpFile); - virtual ~DownloadRequest() { delete _localFile; } + virtual ~DownloadRequest() { + delete _boolCallback; + delete _localFile; + } virtual void handle(); virtual void restart(); diff --git a/backends/cloud/folderdownloadrequest.cpp b/backends/cloud/folderdownloadrequest.cpp index f60c9f6d69..cbd3501772 100644 --- a/backends/cloud/folderdownloadrequest.cpp +++ b/backends/cloud/folderdownloadrequest.cpp @@ -32,6 +32,13 @@ FolderDownloadRequest::FolderDownloadRequest(Storage *storage, Storage::FileArra start(); } +FolderDownloadRequest::~FolderDownloadRequest() { + _ignoreCallback = true; + if (_workingRequest) _workingRequest->finish(); + delete _fileArrayCallback; +} + + void FolderDownloadRequest::start() { //cleanup _ignoreCallback = true; diff --git a/backends/cloud/folderdownloadrequest.h b/backends/cloud/folderdownloadrequest.h index 038dc642ef..949bcad6ee 100644 --- a/backends/cloud/folderdownloadrequest.h +++ b/backends/cloud/folderdownloadrequest.h @@ -47,7 +47,7 @@ class FolderDownloadRequest: public Networking::Request { void finishFiles(Common::Array &files); public: FolderDownloadRequest(Storage *storage, Storage::FileArrayCallback callback, Common::String remoteDirectoryPath, Common::String localDirectoryPath, bool recursive); - virtual ~FolderDownloadRequest() {} + virtual ~FolderDownloadRequest(); virtual void handle() {} virtual void restart() { start(); } -- cgit v1.2.3