From 763c9ddfab6ab47769ec3cf7597818cb814befe1 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Wed, 5 Feb 2025 18:27:23 +0000 Subject: [PATCH] kernel: avoid potential duplicate object in shared library/binary Fixes warning and potential bug whereby init_flag may exist in both libbitcoinkernel as well as a downstream user, as opposed to being shared as intended. src/support/lockedpool.h:224:31: warning: 'init_flag' may be duplicated when built into a shared library: it is mutable, has hidden visibility, and external linkage [-Wunique-object-duplication] --- src/support/lockedpool.cpp | 7 +++++++ src/support/lockedpool.h | 7 +------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/support/lockedpool.cpp b/src/support/lockedpool.cpp index 01eef2b93d3..c27f900d021 100644 --- a/src/support/lockedpool.cpp +++ b/src/support/lockedpool.cpp @@ -400,3 +400,10 @@ void LockedPoolManager::CreateInstance() static LockedPoolManager instance(std::move(allocator)); LockedPoolManager::_instance = &instance; } + +LockedPoolManager& LockedPoolManager::Instance() +{ + static std::once_flag init_flag; + std::call_once(init_flag, LockedPoolManager::CreateInstance); + return *LockedPoolManager::_instance; +} diff --git a/src/support/lockedpool.h b/src/support/lockedpool.h index 2363b1e4ef0..a7d80df8766 100644 --- a/src/support/lockedpool.h +++ b/src/support/lockedpool.h @@ -219,12 +219,7 @@ class LockedPoolManager : public LockedPool { public: /** Return the current instance, or create it once */ - static LockedPoolManager& Instance() - { - static std::once_flag init_flag; - std::call_once(init_flag, LockedPoolManager::CreateInstance); - return *LockedPoolManager::_instance; - } + static LockedPoolManager& Instance(); private: explicit LockedPoolManager(std::unique_ptr allocator);