From 025311d5f6be3d1303d7be1130d1b2ad8036dd91 Mon Sep 17 00:00:00 2001 From: abathur puppe Date: Thu, 9 May 2024 14:17:45 +0200 Subject: [PATCH] fix emplace construction for shm_data. Previous required copy constructor --- src/libipc/platform/linux/mutex.h | 7 +++++-- src/libipc/platform/posix/mutex.h | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/libipc/platform/linux/mutex.h b/src/libipc/platform/linux/mutex.h index d64972e..2264079 100644 --- a/src/libipc/platform/linux/mutex.h +++ b/src/libipc/platform/linux/mutex.h @@ -125,8 +125,11 @@ class mutex { IPC_UNUSED_ std::lock_guard guard {info.lock}; auto it = info.mutex_handles.find(name); if (it == info.mutex_handles.end()) { - it = info.mutex_handles.emplace(name, - curr_prog::shm_data::init{name}).first; + it = info.mutex_handles + .emplace( + std::piecewise_construct, std::forward_as_tuple(name), + std::forward_as_tuple(curr_prog::shm_data::init{name})) + .first; } mutex_ = &it->second.mtx; ref_ = &it->second.ref; diff --git a/src/libipc/platform/posix/mutex.h b/src/libipc/platform/posix/mutex.h index b17092c..9025b17 100644 --- a/src/libipc/platform/posix/mutex.h +++ b/src/libipc/platform/posix/mutex.h @@ -55,8 +55,12 @@ class mutex { IPC_UNUSED_ std::lock_guard guard {info.lock}; auto it = info.mutex_handles.find(name); if (it == info.mutex_handles.end()) { - it = info.mutex_handles.emplace(name, - curr_prog::shm_data::init{name, sizeof(pthread_mutex_t)}).first; + it = info.mutex_handles + .emplace(std::piecewise_construct, + std::forward_as_tuple(name), + std::forward_as_tuple(curr_prog::shm_data::init{ + name, sizeof(pthread_mutex_t)})) + .first; } shm_ = &it->second.shm; ref_ = &it->second.ref;