From e12b13bbb0f81f47f449d72065f3a5957cfe01f0 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 15 Feb 2024 19:45:27 +0300 Subject: [PATCH] Keep reference to Td in TdDb::open to ensure that it isn't closed completely in the meanwhile. --- td/telegram/Td.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 80408671c..4c5a72d6f 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -2965,10 +2965,11 @@ void Td::run_request(uint64 id, tl_object_ptr function) { !parameters.second.use_message_database_ && !parameters.first.use_secret_chats_; - auto promise = PromiseCreator::lambda([actor_id = actor_id(this), parameters = std::move(parameters.first)]( - Result r_opened_database) mutable { - send_closure(actor_id, &Td::init, std::move(parameters), std::move(r_opened_database)); - }); + auto promise = PromiseCreator::lambda( + [actor_id = actor_id(this), parameters = std::move(parameters.first), + parent = create_reference()](Result r_opened_database) mutable { + send_closure(actor_id, &Td::init, std::move(parameters), std::move(r_opened_database)); + }); auto use_sqlite_pmc = parameters.second.use_message_database_ || parameters.second.use_chat_info_database_ || parameters.second.use_file_database_; return TdDb::open(use_sqlite_pmc ? G()->get_database_scheduler_id() : G()->get_slow_net_scheduler_id(),