From 07c0a7be895670385160af9d08752e68cf3edf53 Mon Sep 17 00:00:00 2001 From: Forte11Cuba Date: Sat, 28 Mar 2026 03:45:56 -0600 Subject: [PATCH] fix: remove panic paths in TokenDecoder lock handling --- rust/src/api/token.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/rust/src/api/token.rs b/rust/src/api/token.rs index 7e39eee..7eba0ff 100644 --- a/rust/src/api/token.rs +++ b/rust/src/api/token.rs @@ -108,20 +108,28 @@ impl TokenDecoder { #[frb(sync)] pub fn is_complete(&self) -> bool { - let decoder = self.decoder.read().expect("Lock poisoned"); - decoder.is_complete() + self.decoder + .read() + .map(|decoder| decoder.is_complete()) + .unwrap_or(false) } #[frb(sync)] pub fn receive(&self, input: String) -> Result<(), Error> { - let mut decoder = self.decoder.write().expect("Lock poisoned"); + let mut decoder = self + .decoder + .write() + .map_err(|_| Error::Ur("Token decoder lock poisoned".to_string()))?; decoder.receive(&input)?; Ok(()) } #[frb(sync)] pub fn value(&self) -> Result, Error> { - let decoder = self.decoder.read().expect("Lock poisoned"); + let decoder = self + .decoder + .read() + .map_err(|_| Error::Ur("Token decoder lock poisoned".to_string()))?; let ur = decoder.message()?; match ur { Some(ur) => {