From f57b6248a11bff5c103f992b5e9cd33e9379e508 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 14 Mar 2025 20:08:24 +0100 Subject: [PATCH] Codefix: potential check of thread-shared field evades lock acquisition --- src/core/smallstack_type.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/smallstack_type.hpp b/src/core/smallstack_type.hpp index 73951a77d0..58b03aa244 100644 --- a/src/core/smallstack_type.hpp +++ b/src/core/smallstack_type.hpp @@ -191,8 +191,8 @@ public: */ inline void Push(const Titem &item) { + std::lock_guard lock(SmallStack::GetPool().GetMutex()); if (this->value != Tinvalid) { - std::lock_guard lock(SmallStack::GetPool().GetMutex()); Tindex new_item = SmallStack::GetPool().Create(); if (new_item != Tmax_size) { PooledSmallStack &pushed = SmallStack::GetPool().Get(new_item); @@ -211,11 +211,11 @@ public: */ inline Titem Pop() { + std::lock_guard lock(SmallStack::GetPool().GetMutex()); Titem ret = this->value; if (this->next == Tmax_size) { this->value = Tinvalid; } else { - std::lock_guard lock(SmallStack::GetPool().GetMutex()); PooledSmallStack &popped = SmallStack::GetPool().Get(this->next); this->value = popped.value; if (popped.branch_count == 0) {