diff --git a/shared/utility/FunctionHook.cpp b/shared/utility/FunctionHook.cpp index a8a5587bd..f66d3b0ca 100644 --- a/shared/utility/FunctionHook.cpp +++ b/shared/utility/FunctionHook.cpp @@ -25,7 +25,7 @@ bool FunctionHook::create() { return false; } - if (is_valid()) { + if (is_valid_unsafe()) { return true; } diff --git a/shared/utility/FunctionHook.hpp b/shared/utility/FunctionHook.hpp index 773734631..57a501bb9 100644 --- a/shared/utility/FunctionHook.hpp +++ b/shared/utility/FunctionHook.hpp @@ -31,15 +31,19 @@ class FunctionHook { auto is_valid() const { std::shared_lock _{ m_initialization_mutex }; - return m_inline_hook && m_inline_hook->operator bool(); + return is_valid_unsafe(); } FunctionHook& operator=(const FunctionHook& other) = delete; FunctionHook& operator=(FunctionHook&& other) = delete; private: + bool is_valid_unsafe() const { + return m_inline_hook && m_inline_hook->operator bool(); + } + std::expected m_inline_hook; - std::shared_mutex m_initialization_mutex{}; + mutable std::shared_mutex m_initialization_mutex{}; uintptr_t m_target{ 0 }; uintptr_t m_destination{ 0 };