Fix crash in scheduled messages tear-down.

This commit is contained in:
John Preston 2024-04-16 19:32:07 +04:00
parent 5433f95eda
commit a3e593b747
3 changed files with 12 additions and 1 deletions

View File

@ -113,9 +113,16 @@ ScheduledMessages::ScheduledMessages(not_null<Main::Session*> session)
}
ScheduledMessages::~ScheduledMessages() {
for (const auto &request : _requests) {
Expects(_data.empty());
Expects(_requests.empty());
}
void ScheduledMessages::clear() {
_lifetime.destroy();
for (const auto &request : base::take(_requests)) {
_session->api().request(request.second.requestId).cancel();
}
base::take(_data);
}
void ScheduledMessages::clearOldRequests() {

View File

@ -55,6 +55,8 @@ public:
[[nodiscard]] Data::MessagesSlice list(
not_null<const Data::ForumTopic*> topic) const;
void clear();
private:
using OwnedItem = std::unique_ptr<HistoryItem, HistoryItem::Destroyer>;
struct List {

View File

@ -40,6 +40,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/business/data_business_chatbots.h"
#include "data/business/data_business_info.h"
#include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/stickers/data_stickers.h"
#include "data/notify/data_notify_settings.h"
#include "data/data_bot_app.h"
@ -394,6 +395,7 @@ void Session::clear() {
_histories->unloadAll();
_shortcutMessages = nullptr;
_session->scheduledMessages().clear();
_dependentMessages.clear();
base::take(_messages);
base::take(_nonChannelMessages);