From feca74615ab3e10e7e256630946d830d07414d08 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Tue, 27 Aug 2024 13:12:44 -0400 Subject: Fix custom rust binary view's crashing when opening with options --- rust/src/custombinaryview.rs | 44 ++++++++++++++------------------------------ 1 file changed, 14 insertions(+), 30 deletions(-) (limited to 'rust/src/custombinaryview.rs') diff --git a/rust/src/custombinaryview.rs b/rust/src/custombinaryview.rs index b930c780..c427b6ab 100644 --- a/rust/src/custombinaryview.rs +++ b/rust/src/custombinaryview.rs @@ -111,8 +111,8 @@ where let data = BinaryView::from_raw(BNNewViewReference(data)); match view_type.load_settings_for_data(&data) { - Ok(settings) => Ref::into_raw(settings).handle, - _ => ptr::null_mut() as *mut _, + Some(settings) => Ref::into_raw(settings).handle, + None => ptr::null_mut() as *mut _, } }) } @@ -156,28 +156,23 @@ where pub trait BinaryViewTypeBase: AsRef { fn is_valid_for(&self, data: &BinaryView) -> bool; - fn is_deprecated(&self) -> bool; + fn is_deprecated(&self) -> bool { + false + } - fn default_load_settings_for_data(&self, data: &BinaryView) -> Result> { + fn default_load_settings_for_data(&self, data: &BinaryView) -> Option> { let settings_handle = unsafe { BNGetBinaryViewDefaultLoadSettingsForData(self.as_ref().0, data.handle) }; if settings_handle.is_null() { - Err(()) + None } else { - unsafe { Ok(Settings::from_raw(settings_handle)) } + unsafe { Some(Settings::from_raw(settings_handle)) } } } - - fn load_settings_for_data(&self, data: &BinaryView) -> Result> { - let settings_handle = - unsafe { BNGetBinaryViewLoadSettingsForData(self.as_ref().0, data.handle) }; - - if settings_handle.is_null() { - Err(()) - } else { - unsafe { Ok(Settings::from_raw(settings_handle)) } - } + + fn load_settings_for_data(&self, _data: &BinaryView) -> Option> { + None } } @@ -265,24 +260,13 @@ impl BinaryViewTypeBase for BinaryViewType { unsafe { BNIsBinaryViewTypeDeprecated(self.0) } } - fn default_load_settings_for_data(&self, data: &BinaryView) -> Result> { - let settings_handle = - unsafe { BNGetBinaryViewDefaultLoadSettingsForData(self.0, data.handle) }; - - if settings_handle.is_null() { - Err(()) - } else { - unsafe { Ok(Settings::from_raw(settings_handle)) } - } - } - - fn load_settings_for_data(&self, data: &BinaryView) -> Result> { + fn load_settings_for_data(&self, data: &BinaryView) -> Option> { let settings_handle = unsafe { BNGetBinaryViewLoadSettingsForData(self.0, data.handle) }; if settings_handle.is_null() { - Err(()) + None } else { - unsafe { Ok(Settings::from_raw(settings_handle)) } + unsafe { Some(Settings::from_raw(settings_handle)) } } } } -- cgit v1.3.1