From e957235cacc817f7fe798bd2f5d5cbd3cca5d173 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 13 Sep 2026 07:23:33 +0300 Subject: [PATCH] Fixed leak of premium preview preloads after show expiry. --- Telegram/SourceFiles/boxes/premium_preview_box.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.cpp b/Telegram/SourceFiles/boxes/premium_preview_box.cpp index 732891ec60..98db3bb06b 100644 --- a/Telegram/SourceFiles/boxes/premium_preview_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_preview_box.cpp @@ -1326,6 +1326,15 @@ void Show( } } +void RemoveExpiredPreloads() { + auto &list = Preloads(); + list.erase( + ranges::remove_if(list, [](const Preload &preload) { + return preload.show.expired(); + }), + end(list)); +} + void Show(std::shared_ptr show, QImage back) { auto &list = Preloads(); for (auto i = begin(list); i != end(list);) { @@ -1479,6 +1488,8 @@ void Show( crl::on_main([=] { if (auto strong = weak.lock()) { Show(std::move(strong), result); + } else { + RemoveExpiredPreloads(); } }); });