From 3852245f7448d163343d3dd338478bc3fa653757 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Thu, 26 Mar 2026 16:58:19 +0100 Subject: [PATCH] fix: use mutex poisoning recovery in bookmarks plugin --- crates/owlry-plugin-bookmarks/src/lib.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/owlry-plugin-bookmarks/src/lib.rs b/crates/owlry-plugin-bookmarks/src/lib.rs index 40c03f9..ee541dd 100644 --- a/crates/owlry-plugin-bookmarks/src/lib.rs +++ b/crates/owlry-plugin-bookmarks/src/lib.rs @@ -229,7 +229,7 @@ impl BookmarksState { fn load_bookmarks(&self) { // Fast path: load from cache immediately { - let mut items = self.items.lock().unwrap(); + let mut items = self.items.lock().unwrap_or_else(|e| e.into_inner()); if items.is_empty() { *items = Self::load_cached_bookmarks(); } @@ -262,7 +262,9 @@ impl BookmarksState { Self::save_cached_bookmarks(&items); // Update shared state so subsequent refreshes see the new data - *shared_items.lock().unwrap() = items; + if let Ok(mut shared) = shared_items.lock() { + *shared = items; + } loading.store(false, Ordering::SeqCst); }); @@ -549,7 +551,7 @@ extern "C" fn provider_refresh(handle: ProviderHandle) -> RVec { state.load_bookmarks(); // Return items - let items = state.items.lock().unwrap(); + let items = state.items.lock().unwrap_or_else(|e| e.into_inner()); items.to_vec().into() }