diff --git a/Telegram/SourceFiles/data/data_document.cpp b/Telegram/SourceFiles/data/data_document.cpp index 75677b966..72c3e2552 100644 --- a/Telegram/SourceFiles/data/data_document.cpp +++ b/Telegram/SourceFiles/data/data_document.cpp @@ -749,6 +749,7 @@ void DocumentData::automaticLoadSettingsChanged() { } void DocumentData::finishLoad() { + // NB! _loader may be in ~FileLoader() already. const auto guard = gsl::finally([&] { destroyLoader(); }); diff --git a/Telegram/SourceFiles/storage/file_download.cpp b/Telegram/SourceFiles/storage/file_download.cpp index 7a32d5670..75ad3fa36 100644 --- a/Telegram/SourceFiles/storage/file_download.cpp +++ b/Telegram/SourceFiles/storage/file_download.cpp @@ -43,7 +43,11 @@ FileLoader::FileLoader( Expects(!_filename.isEmpty() || (_size <= Storage::kMaxFileInMemory)); } -FileLoader::~FileLoader() = default; +FileLoader::~FileLoader() { + if (!_finished) { + cancel(); + } +} Main::Session &FileLoader::session() const { return *_session;