diff options
| author | Mason Reed <mason@vector35.com> | 2024-08-27 13:12:44 -0400 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2024-08-27 17:19:25 -0400 |
| commit | feca74615ab3e10e7e256630946d830d07414d08 (patch) | |
| tree | 860978bbb66722c0240ece286c63298cb2faf534 /rust/src/custombinaryview.rs | |
| parent | 1a13e37e82714d9fd056c96e01cbde44ceaccac8 (diff) | |
Fix custom rust binary view's crashing when opening with options
Diffstat (limited to 'rust/src/custombinaryview.rs')
| -rw-r--r-- | rust/src/custombinaryview.rs | 44 |
1 files changed, 14 insertions, 30 deletions
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<BinaryViewType> { 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<Ref<Settings>> { + fn default_load_settings_for_data(&self, data: &BinaryView) -> Option<Ref<Settings>> { 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<Ref<Settings>> { - 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<Ref<Settings>> { + None } } @@ -265,24 +260,13 @@ impl BinaryViewTypeBase for BinaryViewType { unsafe { BNIsBinaryViewTypeDeprecated(self.0) } } - fn default_load_settings_for_data(&self, data: &BinaryView) -> Result<Ref<Settings>> { - 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<Ref<Settings>> { + fn load_settings_for_data(&self, data: &BinaryView) -> Option<Ref<Settings>> { 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)) } } } } |
