From 8ba8388e12ab32ad937c4514f7a907d2530f1ef8 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Sat, 31 May 2025 10:45:26 -0400 Subject: [Rust] Retrieve architecture if missing from location passed to `MediumLevelILFunction::instruction_from_index` Fixes https://github.com/Vector35/binaryninja-api/issues/6876 --- rust/src/medium_level_il/function.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'rust/src/medium_level_il/function.rs') diff --git a/rust/src/medium_level_il/function.rs b/rust/src/medium_level_il/function.rs index 4206f7dd..54df3d12 100644 --- a/rust/src/medium_level_il/function.rs +++ b/rust/src/medium_level_il/function.rs @@ -47,11 +47,10 @@ impl MediumLevelILFunction { loc: L, ) -> Option { let loc: Location = loc.into(); - let arch = loc - .arch - .map(|a| a.handle) - .unwrap_or_else(std::ptr::null_mut); - let instr_idx = unsafe { BNMediumLevelILGetInstructionStart(self.handle, arch, loc.addr) }; + // If the location does not specify an architecture, use the function's architecture. + let arch = loc.arch.unwrap_or_else(|| self.function().arch()); + let instr_idx = + unsafe { BNMediumLevelILGetInstructionStart(self.handle, arch.handle, loc.addr) }; // `instr_idx` will equal self.instruction_count() if the instruction is not valid. if instr_idx >= self.instruction_count() { None -- cgit v1.3.1