From c6fb89599ac255fdd55b4363254d149e60e3cd31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=8D=E5=85=AE=E6=83=9A=E5=85=AE?= <101191390+HIllya51@users.noreply.github.com> Date: Sun, 12 May 2024 14:00:34 +0800 Subject: [PATCH] fix --- LunaHost/GUI/LunaHost.cpp | 11 +++++++++-- LunaHost/host.cpp | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/LunaHost/GUI/LunaHost.cpp b/LunaHost/GUI/LunaHost.cpp index 6921db6..ead42d5 100644 --- a/LunaHost/GUI/LunaHost.cpp +++ b/LunaHost/GUI/LunaHost.cpp @@ -369,8 +369,15 @@ void LunaHost::on_text_recv_checkissaved(TextThread& thread) } +std::wstring sanitize(const std::wstring& s1) { + std::wstring s=s1; + s.erase(std::remove_if(s.begin(), s.end(), [](wchar_t ch) { + return (ch >= 0xD800 && ch <= 0xDBFF) || (ch >= 0xDC00 && ch <= 0xDFFF); + }), s.end()); + return s; +} void LunaHost::showtext(const std::wstring&text,bool clear){ - auto output=text; + auto output=sanitize(text); strReplace(output,L"\n",L"\r\n"); if(clear) { @@ -385,7 +392,7 @@ void LunaHost::showtext(const std::wstring&text,bool clear){ void LunaHost::updatelisttext(const std::wstring&text,LONG_PTR data){ auto idx=g_hListBox_listtext->querydataidx(data); if(idx>=0){ - auto __output=text; + auto __output=sanitize(text); strReplace(__output,L"\n",L" "); if(__output.size()>0x40){ __output=__output.substr(0,0x40)+L"..."; diff --git a/LunaHost/host.cpp b/LunaHost/host.cpp index bf05614..3c694ed 100644 --- a/LunaHost/host.cpp +++ b/LunaHost/host.cpp @@ -200,8 +200,8 @@ namespace Host { OnConnect = [=](auto &&...args){std::lock_guard _(syncmutex);Connect(args...);}; OnDisconnect = [=](auto &&...args){std::lock_guard _(syncmutex);Disconnect(args...);}; - OnCreate = [=](TextThread& thread) {std::lock_guard _(syncmutex); Create(thread); thread.Start(); }; - OnDestroy = [=](TextThread& thread) {std::lock_guard _(syncmutex); thread.Stop(); Destroy(thread); }; + OnCreate = [=](TextThread& thread) {{std::lock_guard _(syncmutex); Create(thread);} thread.Start(); }; + OnDestroy = [=](TextThread& thread) {thread.Stop(); {std::lock_guard _(syncmutex); Destroy(thread);} }; TextThread::Output = [=](auto &&...args){std::lock_guard _(syncmutex);return Output(args...);}; textThreadsByParams->try_emplace(console, console, HookParam{}, CONSOLE);