From 2dc4e1923a95d8ad4c1eff19399614253507c0fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=85=E6=88=8E=E6=B0=8F?= Date: Thu, 6 Feb 2025 11:51:30 +0800 Subject: [PATCH] fix(ipcserver): concurrent access to rime api fixes #1487 --- WeaselIPCServer/WeaselServerImpl.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/WeaselIPCServer/WeaselServerImpl.cpp b/WeaselIPCServer/WeaselServerImpl.cpp index 3b5075b42..11225c445 100644 --- a/WeaselIPCServer/WeaselServerImpl.cpp +++ b/WeaselIPCServer/WeaselServerImpl.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "WeaselServerImpl.h" +#include #include #include #include @@ -161,6 +162,8 @@ int ServerImpl::Stop() { return 0; } +static std::mutex g_api_mutex; + int ServerImpl::Run() { // This workaround causes a VC internal error: // void PipeServer::Listen(ServerHandler handler); @@ -168,8 +171,8 @@ int ServerImpl::Run() { // auto handler = boost::bind(&ServerImpl::HandlePipeMessage, this); // auto listener = boost::bind(&PipeServer::Listen, channel.get(), handler); // - auto listener = [this](PipeMessage msg, PipeServer::Respond resp) -> void { + std::lock_guard guard(g_api_mutex); HandlePipeMessage(msg, resp); }; pipeThread = std::make_unique(