From afd1467e03a4b73643928139a837557d97cba189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E5=A4=B4=E4=BA=91?= <372449116@qq.com> Date: Mon, 15 Dec 2025 11:54:04 +0000 Subject: [PATCH] fix(log): use template to pass logger to initiator and fix format error - src/libipc/platform/win/get_sa.h: * Convert initiator struct to template with Logger parameter * Pass log object from get_sa() to initiator constructor via template * Use 'static initiator handle(log)' to instantiate * This allows initiator constructor to properly access log object * Syntax: initiator(Logger const &log) receives the logger - src/libipc/platform/win/semaphore.h: * Fix format error on line 79: remove extra characters '"}]' * Correct closing of log.error() statement * Before: log.error(...)"}] * After: log.error(...); These fixes resolve the static struct initialization issue and code format error in Windows platform. --- src/libipc/platform/win/get_sa.h | 12 +++++++----- src/libipc/platform/win/semaphore.h | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libipc/platform/win/get_sa.h b/src/libipc/platform/win/get_sa.h index b512541..2741459 100644 --- a/src/libipc/platform/win/get_sa.h +++ b/src/libipc/platform/win/get_sa.h @@ -7,14 +7,14 @@ namespace detail { inline LPSECURITY_ATTRIBUTES get_sa() { LIBIPC_LOG(); - static struct initiator { - + + template + struct initiator { SECURITY_DESCRIPTOR sd_; SECURITY_ATTRIBUTES sa_; - bool succ_ = false; - initiator() { + initiator(Logger const &log) { if (!::InitializeSecurityDescriptor(&sd_, SECURITY_DESCRIPTOR_REVISION)) { log.error("fail InitializeSecurityDescriptor[", static_cast(::GetLastError()), "]"); return; @@ -28,7 +28,9 @@ inline LPSECURITY_ATTRIBUTES get_sa() { sa_.lpSecurityDescriptor = &sd_; succ_ = true; } - } handle; + }; + + static initiator handle(log); return handle.succ_ ? &handle.sa_ : nullptr; } diff --git a/src/libipc/platform/win/semaphore.h b/src/libipc/platform/win/semaphore.h index 2182d91..b5915e9 100644 --- a/src/libipc/platform/win/semaphore.h +++ b/src/libipc/platform/win/semaphore.h @@ -76,7 +76,7 @@ public: bool post(std::uint32_t count) noexcept { LIBIPC_LOG(); if (!::ReleaseSemaphore(h_, static_cast(count), NULL)) { - log.error("fail ReleaseSemaphore[", ::GetLastError(), "]");"}] + log.error("fail ReleaseSemaphore[", ::GetLastError(), "]"); return false; } return true;