From f59e824ec17dbb1e3dc97d3975cf76837e7e23c5 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 5 Dec 2018 15:50:41 +0400 Subject: [PATCH] Possibly fix a crash in image loader. --- Telegram/SourceFiles/ui/image/image.h | 9 +++++++-- Telegram/SourceFiles/ui/image/image_source.cpp | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/ui/image/image.h b/Telegram/SourceFiles/ui/image/image.h index ce770c36a..6dff6f1fc 100644 --- a/Telegram/SourceFiles/ui/image/image.h +++ b/Telegram/SourceFiles/ui/image/image.h @@ -45,6 +45,13 @@ ImagePtr Create(const GeoPointLocation &location); class Source { public: + Source() = default; + Source(const Source &other) = delete; + Source(Source &&other) = delete; + Source &operator=(const Source &other) = delete; + Source &operator=(Source &&other) = delete; + virtual ~Source() = default; + virtual void load( Data::FileOrigin origin, bool loadFirst, @@ -83,8 +90,6 @@ public: virtual QByteArray bytesForCache() = 0; - virtual ~Source() = default; - }; } // namespace Images diff --git a/Telegram/SourceFiles/ui/image/image_source.cpp b/Telegram/SourceFiles/ui/image/image_source.cpp index d38f63caa..e7075d613 100644 --- a/Telegram/SourceFiles/ui/image/image_source.cpp +++ b/Telegram/SourceFiles/ui/image/image_source.cpp @@ -325,6 +325,8 @@ void RemoteSource::loadLocal() { void RemoteSource::setImageBytes(const QByteArray &bytes) { if (bytes.isEmpty()) { return; + } else if (loaderValid()) { + unload(); } _loader = createLoader({}, LoadFromLocalOnly, true); _loader->finishWithBytes(bytes);