From f89168d00a9b8372d7a994342642feb42c4302a1 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Tue, 10 Jun 2025 19:37:04 -0400 Subject: [PATCH] refactor: use std::mutex in ArchStrings port https://github.com/debauchee/barrier/pull/410/commits/b0e415de03d3a7b6379712cbd169ea8e41dddcc0 build: link base to arch --- src/lib/arch/ArchString.cpp | 28 ++++------------------------ src/lib/arch/ArchString.h | 2 +- src/lib/base/CMakeLists.txt | 1 + 3 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/lib/arch/ArchString.cpp b/src/lib/arch/ArchString.cpp index a1ea335e8..3f8d903b1 100644 --- a/src/lib/arch/ArchString.cpp +++ b/src/lib/arch/ArchString.cpp @@ -6,28 +6,21 @@ */ #include "arch/ArchString.h" -#include "arch/Arch.h" #include #include #include +#include -static ArchMutex s_mutex = nullptr; +std::mutex s_mutex; // // use C library non-reentrant multibyte conversion with mutex // -ArchString::~ArchString() -{ - if (s_mutex != nullptr) { - ARCH->closeMutex(s_mutex); - s_mutex = nullptr; - } -} - int ArchString::convStringWCToMB(char *dst, const wchar_t *src, uint32_t n, bool *errors) const { + std::lock_guard lock(s_mutex); ptrdiff_t len = 0; bool dummyErrors; @@ -36,12 +29,6 @@ int ArchString::convStringWCToMB(char *dst, const wchar_t *src, uint32_t n, bool } *errors = false; - if (s_mutex == nullptr) { - s_mutex = ARCH->newMutex(); - } - - ARCH->lockMutex(s_mutex); - if (dst == nullptr) { char dummy[MB_LEN_MAX]; const wchar_t *scan = src; @@ -75,7 +62,6 @@ int ArchString::convStringWCToMB(char *dst, const wchar_t *src, uint32_t n, bool } len = dst - dst0; } - ARCH->unlockMutex(s_mutex); return static_cast(len); } @@ -91,6 +77,7 @@ ArchString::EWideCharEncoding ArchString::getWideCharEncoding() const int ArchString::convStringMBToWC(wchar_t *dst, const char *src, uint32_t n, bool *errors) const { + std::lock_guard lock(s_mutex); ptrdiff_t len = 0; wchar_t dummy; @@ -100,12 +87,6 @@ int ArchString::convStringMBToWC(wchar_t *dst, const char *src, uint32_t n, bool } *errors = false; - if (s_mutex == nullptr) { - s_mutex = ARCH->newMutex(); - } - - ARCH->lockMutex(s_mutex); - if (dst == nullptr) { const char *scan = src; while (n > 0) { @@ -177,7 +158,6 @@ int ArchString::convStringMBToWC(wchar_t *dst, const char *src, uint32_t n, bool } len = dst - dst0; } - ARCH->unlockMutex(s_mutex); return static_cast(len); } diff --git a/src/lib/arch/ArchString.h b/src/lib/arch/ArchString.h index 495bf4928..eb1b46908 100644 --- a/src/lib/arch/ArchString.h +++ b/src/lib/arch/ArchString.h @@ -24,7 +24,7 @@ public: ArchString() = default; ArchString(const ArchString &) = delete; ArchString(ArchString &&) = delete; - ~ArchString() override; + ~ArchString() = default; ArchString &operator=(const ArchString &) = delete; ArchString &operator=(ArchString &&) = delete; diff --git a/src/lib/base/CMakeLists.txt b/src/lib/base/CMakeLists.txt index 0f4b089ab..e89aca717 100644 --- a/src/lib/base/CMakeLists.txt +++ b/src/lib/base/CMakeLists.txt @@ -41,3 +41,4 @@ add_library(base STATIC XBase.h ) +target_link_libraries(base PRIVATE arch)