Skip to content

Commit

Permalink
Fix miri getting angry about encode_hex.
Browse files Browse the repository at this point in the history
  • Loading branch information
WINSDK committed Apr 23, 2024
1 parent 4f16809 commit 7c4ef57
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
3 changes: 2 additions & 1 deletion decoder-arm/tests/test.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
mod armv7;
mod armv8;

use decoder::{Decodable, Reader, TokenStream, ToTokens};
use decoder::{Decodable, Reader, ToTokens};
use debugvault::Index;
use tokenizing::TokenStream;

fn test_range<A: Decodable>(decoder: &A, start: u64, end: u64) {
let mut stream = TokenStream::new();
Expand Down
13 changes: 11 additions & 2 deletions decoder/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ fn unlikely(b: bool) -> bool {
pub fn encode_hex(mut imm: i64) -> String {
unsafe {
let mut buffer = Vec::with_capacity(19);
let slice = &mut buffer[..];
let slice = buffer.spare_capacity_mut();
let slice = std::mem::transmute::<_, &mut [u8]>(slice);
let mut idx = 0;

if imm.is_negative() {
Expand Down Expand Up @@ -227,7 +228,8 @@ pub fn encode_hex(mut imm: i64) -> String {
pub fn encode_uhex(mut imm: u64) -> String {
unsafe {
let mut buffer = Vec::with_capacity(19);
let slice = &mut buffer[..];
let slice = buffer.spare_capacity_mut();
let slice = std::mem::transmute::<_, &mut [u8]>(slice);
let mut idx = 0;

*slice.get_unchecked_mut(idx) = b'0';
Expand Down Expand Up @@ -273,4 +275,11 @@ mod tests {
assert_eq!(super::encode_hex(-0x800000000000000), "-0x800000000000000");
assert_eq!(super::encode_hex(0x7fffffffffffffff), "0x7fffffffffffffff");
}

#[test]
fn encode_uhex() {
assert_eq!(super::encode_uhex(0x123123), "0x123123");
assert_eq!(super::encode_uhex(0x0), "0x0");
assert_eq!(super::encode_uhex(0x7fffffffffffffff), "0x7fffffffffffffff");
}
}

0 comments on commit 7c4ef57

Please sign in to comment.