From 5d7fc519669472a63db72e65d2630e57d84f1ca7 Mon Sep 17 00:00:00 2001 From: Yoonseok Kim Date: Fri, 28 Nov 2025 17:47:37 +0900 Subject: [PATCH 1/2] Fix: correct conditional lock releasing without acquire (index_gt::update use this lock) --- include/usearch/index.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/usearch/index.hpp b/include/usearch/index.hpp index 05f55f01..48682e8c 100644 --- a/include/usearch/index.hpp +++ b/include/usearch/index.hpp @@ -3836,7 +3836,8 @@ class index_gt { inline node_conditional_lock_t node_try_conditional_lock_(std::size_t slot, bool condition, bool& failed_to_acquire) const noexcept { - failed_to_acquire = condition ? nodes_mutexes_.atomic_set(slot) : false; + if (!condition) return {nodes_mutexes_, std::numeric_limits::max()}; + failed_to_acquire = nodes_mutexes_.atomic_set(slot); return {nodes_mutexes_, failed_to_acquire ? std::numeric_limits::max() : slot}; } From d55a5201d591f51bcf6b5dfcbddc9ab13e71039a Mon Sep 17 00:00:00 2001 From: Yoonseok Kim <43584573+yoonseok-kim@users.noreply.github.com> Date: Fri, 28 Nov 2025 22:30:44 +0900 Subject: [PATCH 2/2] Update include/usearch/index.hpp Co-authored-by: YoungHwi --- include/usearch/index.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/usearch/index.hpp b/include/usearch/index.hpp index 48682e8c..2f49a39e 100644 --- a/include/usearch/index.hpp +++ b/include/usearch/index.hpp @@ -3836,7 +3836,10 @@ class index_gt { inline node_conditional_lock_t node_try_conditional_lock_(std::size_t slot, bool condition, bool& failed_to_acquire) const noexcept { - if (!condition) return {nodes_mutexes_, std::numeric_limits::max()}; + if (!condition) { + failed_to_acquire = false; + return {nodes_mutexes_, std::numeric_limits::max()}; + } failed_to_acquire = nodes_mutexes_.atomic_set(slot); return {nodes_mutexes_, failed_to_acquire ? std::numeric_limits::max() : slot}; }