From a708fa03326a03dbc82acc7e41bd3ec262a05248 Mon Sep 17 00:00:00 2001 From: Lahfir <70215676+lahfir@users.noreply.github.com> Date: Sat, 27 Jun 2026 20:14:44 -0700 Subject: [PATCH] fix(macos): harden retained_handle null guard against release-only CFRetain(null) (#80) Make the retained_handle null check unconditional so release builds no longer risk CFRetain(null); tests keep benign placeholder behavior, production returns ElementNotFound. --- crates/macos/src/tree/resolve_classify.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/macos/src/tree/resolve_classify.rs b/crates/macos/src/tree/resolve_classify.rs index 1618e72..5527bf5 100644 --- a/crates/macos/src/tree/resolve_classify.rs +++ b/crates/macos/src/tree/resolve_classify.rs @@ -84,9 +84,11 @@ fn text_len(value: Option<&str>) -> usize { #[cfg(target_os = "macos")] fn retained_handle(candidate: AXElement) -> Result { use core_foundation::base::{CFRetain, CFTypeRef}; - #[cfg(test)] if candidate.0.is_null() { + #[cfg(test)] return Ok(NativeHandle::null()); + #[cfg(not(test))] + return Err(AdapterError::element_not_found("element")); } unsafe { CFRetain(candidate.0 as CFTypeRef) }; Ok(unsafe { NativeHandle::from_ptr(candidate.0 as *const _) })