From 2a2b626210d36e8b483b070523de8561b4d47355 Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sat, 11 Feb 2023 18:25:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E9=81=97=E6=BC=8F=E7=9A=84?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libipc/platform/posix/mutex.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libipc/platform/posix/mutex.h b/src/libipc/platform/posix/mutex.h index d2289fd..b17092c 100644 --- a/src/libipc/platform/posix/mutex.h +++ b/src/libipc/platform/posix/mutex.h @@ -80,12 +80,18 @@ class mutex { } } + static pthread_mutex_t const &zero_mem() { + static const pthread_mutex_t tmp{}; + return tmp; + } + public: mutex() = default; ~mutex() = default; static void init() { // Avoid exception problems caused by static member initialization order. + zero_mem(); curr_prog::get(); } @@ -98,9 +104,8 @@ public: } bool valid() const noexcept { - static const char tmp[sizeof(pthread_mutex_t)] {}; return (shm_ != nullptr) && (ref_ != nullptr) && (mutex_ != nullptr) - && (std::memcmp(tmp, mutex_, sizeof(pthread_mutex_t)) != 0); + && (std::memcmp(&zero_mem(), mutex_, sizeof(pthread_mutex_t)) != 0); } bool open(char const *name) noexcept {