Fix crash in scheduled messages tear-down.
This commit is contained in:
parent
5433f95eda
commit
a3e593b747
|
@ -113,9 +113,16 @@ ScheduledMessages::ScheduledMessages(not_null<Main::Session*> session)
|
||||||
}
|
}
|
||||||
|
|
||||||
ScheduledMessages::~ScheduledMessages() {
|
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();
|
_session->api().request(request.second.requestId).cancel();
|
||||||
}
|
}
|
||||||
|
base::take(_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScheduledMessages::clearOldRequests() {
|
void ScheduledMessages::clearOldRequests() {
|
||||||
|
|
|
@ -55,6 +55,8 @@ public:
|
||||||
[[nodiscard]] Data::MessagesSlice list(
|
[[nodiscard]] Data::MessagesSlice list(
|
||||||
not_null<const Data::ForumTopic*> topic) const;
|
not_null<const Data::ForumTopic*> topic) const;
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using OwnedItem = std::unique_ptr<HistoryItem, HistoryItem::Destroyer>;
|
using OwnedItem = std::unique_ptr<HistoryItem, HistoryItem::Destroyer>;
|
||||||
struct List {
|
struct List {
|
||||||
|
|
|
@ -40,6 +40,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "data/business/data_business_chatbots.h"
|
#include "data/business/data_business_chatbots.h"
|
||||||
#include "data/business/data_business_info.h"
|
#include "data/business/data_business_info.h"
|
||||||
#include "data/business/data_shortcut_messages.h"
|
#include "data/business/data_shortcut_messages.h"
|
||||||
|
#include "data/components/scheduled_messages.h"
|
||||||
#include "data/stickers/data_stickers.h"
|
#include "data/stickers/data_stickers.h"
|
||||||
#include "data/notify/data_notify_settings.h"
|
#include "data/notify/data_notify_settings.h"
|
||||||
#include "data/data_bot_app.h"
|
#include "data/data_bot_app.h"
|
||||||
|
@ -394,6 +395,7 @@ void Session::clear() {
|
||||||
|
|
||||||
_histories->unloadAll();
|
_histories->unloadAll();
|
||||||
_shortcutMessages = nullptr;
|
_shortcutMessages = nullptr;
|
||||||
|
_session->scheduledMessages().clear();
|
||||||
_dependentMessages.clear();
|
_dependentMessages.clear();
|
||||||
base::take(_messages);
|
base::take(_messages);
|
||||||
base::take(_nonChannelMessages);
|
base::take(_nonChannelMessages);
|
||||||
|
|
Loading…
Reference in New Issue