From b20092369ffa8f3d78ecdb66be7a3c05fabe0d48 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 22 Apr 2019 20:09:42 +0200 Subject: [PATCH] fix extracting a u64 on little-endian CPUs --- rand_core/src/block.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rand_core/src/block.rs b/rand_core/src/block.rs index 6772a18a895..b1dd4cef9e4 100644 --- a/rand_core/src/block.rs +++ b/rand_core/src/block.rs @@ -181,9 +181,9 @@ where ::Results: AsRef<[u32]> + AsMut<[u32]> #[inline(always)] fn next_u64(&mut self) -> u64 { let read_u64 = |results: &[u32], index| { - if cfg!(any(target_arch = "x86", target_arch = "x86_64")) { - // requires little-endian CPU supporting unaligned reads: - let ptr: *const u64 = results[index..index+1].as_ptr() as *const u64; + if cfg!(any(target_endian = "little")) { + // requires little-endian CPU + let ptr: *const u64 = results[index..=index+1].as_ptr() as *const u64; unsafe { ptr::read_unaligned(ptr) } } else { let x = u64::from(results[index]);