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]
This commit is contained in:
Cory Fields authored and sedited committed 2026-02-13 08:50:50 +01:00
1 parent 24c3b47010
commit eafd530d20
2 files changed
+8 -6

No files matched your search

+7
View File
@@ -399,3 +399,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;
}
+1 -6
View File
@@ -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<LockedPageAllocator> allocator);