From dd1e281c85cb047c6a4a05a4af0314e064cba088 Mon Sep 17 00:00:00 2001 From: 5225225 <5225225@mailbox.org> Date: Sun, 19 Dec 2021 20:34:52 +0000 Subject: Wrap unsafe functions to catch errors in debug Closes https://github.com/iximeow/yaxpeax-x86/issues/16 --- src/long_mode/display.rs | 5 +++-- src/long_mode/mod.rs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/long_mode') diff --git a/src/long_mode/display.rs b/src/long_mode/display.rs index 35b9c1f..3295ae7 100644 --- a/src/long_mode/display.rs +++ b/src/long_mode/display.rs @@ -3,6 +3,7 @@ use core::fmt; use yaxpeax_arch::{Colorize, ShowContextual, NoColors, YaxColors}; use yaxpeax_arch::display::*; +use crate::safer_unchecked::GetSaferUnchecked as _; use crate::MEM_SIZE_STRINGS; use crate::long_mode::{RegSpec, Opcode, Operand, MergeMode, InstDecoder, Instruction, Segment, PrefixRex, OperandSpec}; @@ -127,7 +128,7 @@ const REG_NAMES: &[&'static str] = &[ ]; pub(crate) fn regspec_label(spec: &RegSpec) -> &'static str { - unsafe { REG_NAMES.get_unchecked((spec.num as u16 + ((spec.bank as u16) << 3)) as usize) } + unsafe { REG_NAMES.get_kinda_unchecked((spec.num as u16 + ((spec.bank as u16) << 3)) as usize) } } impl fmt::Display for RegSpec { @@ -1810,7 +1811,7 @@ const MNEMONICS: &[&'static str] = &[ impl Opcode { fn name(&self) -> &'static str { unsafe { - MNEMONICS.get_unchecked(*self as usize) + MNEMONICS.get_kinda_unchecked(*self as usize) } } } diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index 44cf992..d2cb2f7 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -10,7 +10,7 @@ pub use crate::MemoryAccessSize; pub use self::display::{DisplayStyle, InstructionDisplayer}; use core::cmp::PartialEq; -use core::hint::unreachable_unchecked; +use crate::safer_unchecked::unreachable_kinda_unchecked as unreachable_unchecked; use yaxpeax_arch::{AddressDiff, Decoder, Reader, LengthedInstruction}; use yaxpeax_arch::annotation::{AnnotatingDecoder, DescriptionSink, NullSink}; -- cgit v1.1