fix: possible translator crash

This commit is contained in:
AlexeyZavar
2026-06-17 15:11:57 +03:00
parent 9d5fa2358b
commit 0b02f28818
@@ -8,6 +8,7 @@
#include "api/api_text_entities.h" #include "api/api_text_entities.h"
#include "ayu/features/translator/ayu_translator.h" #include "ayu/features/translator/ayu_translator.h"
#include "base/weak_ptr.h"
#include "data/data_msg_id.h" #include "data/data_msg_id.h"
#include "data/data_peer.h" #include "data/data_peer.h"
#include "data/data_session.h" #include "data/data_session.h"
@@ -17,7 +18,9 @@
namespace { namespace {
class AyuTranslateProvider final : public Ui::TranslateProvider { class AyuTranslateProvider final
: public Ui::TranslateProvider
, public base::has_weak_ptr {
public: public:
AyuTranslateProvider( AyuTranslateProvider(
not_null<Main::Session*> session, not_null<Main::Session*> session,
@@ -48,6 +51,18 @@ public:
const LanguageId &to, const LanguageId &to,
Fn<void(int, Ui::TranslateProviderResult)> doneOne, Fn<void(int, Ui::TranslateProviderResult)> doneOne,
Fn<void()> doneAll) override { Fn<void()> doneAll) override {
doneOne = [weak = base::make_weak(this), doneOne = std::move(doneOne)](
int index,
Ui::TranslateProviderResult result) {
if (weak) {
doneOne(index, std::move(result));
}
};
doneAll = [weak = base::make_weak(this), doneAll = std::move(doneAll)] {
if (weak) {
doneAll();
}
};
if (requests.empty()) { if (requests.empty()) {
doneAll(); doneAll();
return; return;