From ff6365ec72842f4cf53120716dea86e8f5665796 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 14 Apr 2020 15:38:29 +0400 Subject: [PATCH] Fix crash in still downloaded ~DocumentData. --- Telegram/SourceFiles/data/data_document.cpp | 1 + Telegram/SourceFiles/storage/file_download.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) 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;