parent
3fcfb3bcfb
commit
a3d3918d5f
@ -1,2 +1,3 @@
|
||||
/seahash-3.0.5.crate
|
||||
/seahash-3.0.6.crate
|
||||
/seahash-3.0.7.crate
|
||||
|
@ -1,50 +0,0 @@
|
||||
From e3e13c3bce273a05d7101d174db1d6e0f49a908d Mon Sep 17 00:00:00 2001
|
||||
From: Diggory Hardy <git@dhardy.name>
|
||||
Date: Sat, 25 Nov 2017 17:38:40 +0000
|
||||
Subject: [PATCH] Fix read_u64 for 32-bit platforms
|
||||
|
||||
(Why you can't rely on .to_le() being correct I don't understand. If compiler
|
||||
is mixed-endian then to_le ought still do the correct swaps.)
|
||||
---
|
||||
src/buffer.rs | 4 ++--
|
||||
src/helper.rs | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/buffer.rs b/src/buffer.rs
|
||||
index a39be99..af910e2 100644
|
||||
--- a/src/buffer.rs
|
||||
+++ b/src/buffer.rs
|
||||
@@ -65,7 +65,7 @@ impl State {
|
||||
|
||||
// Calculate the number of excessive bytes. These are bytes that could not be handled
|
||||
// in the loop above.
|
||||
- let mut excessive = buf.len() as usize + buf.as_ptr() as usize - end_ptr as usize;
|
||||
+ let mut excessive = buf.len() % 32;
|
||||
// Handle the excessive bytes.
|
||||
match excessive {
|
||||
0 => {},
|
||||
@@ -73,7 +73,7 @@ impl State {
|
||||
// 1 or more excessive.
|
||||
|
||||
// Write the last excessive bytes (<8 bytes).
|
||||
- a ^= helper::read_int(slice::from_raw_parts(ptr as *const u8, excessive));
|
||||
+ a ^= helper::read_int(slice::from_raw_parts(ptr, excessive));
|
||||
|
||||
// Diffuse.
|
||||
a = helper::diffuse(a);
|
||||
diff --git a/src/helper.rs b/src/helper.rs
|
||||
index df379a9..fbb9f6d 100644
|
||||
--- a/src/helper.rs
|
||||
+++ b/src/helper.rs
|
||||
@@ -60,7 +60,7 @@ pub unsafe fn read_u64(ptr: *const u8) -> u64 {
|
||||
{
|
||||
// We cannot be sure about the memory layout of a potentially emulated 64-bit integer, so
|
||||
// we read it manually. If possible, the compiler should emit proper instructions.
|
||||
- (*(ptr as *const u32)).to_le() as u64 | ((*(ptr as *const u32)).to_le() as u64) << 32
|
||||
+ (*(ptr as *const u32)).to_le() as u64 | ((*(ptr as *const u32).offset(1)).to_le() as u64) << 32
|
||||
}
|
||||
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
--
|
||||
2.21.0.rc1
|
||||
|
@ -1 +1 @@
|
||||
SHA512 (seahash-3.0.6.crate) = 21d6fc43c5770145c5fb678c4beb3c0ad23f5de20aaa040cbddea8d12b77479a9cc568ecaccb30c3338a07fe30f626dbf6706efb965bd82da530b713173dbfc2
|
||||
SHA512 (seahash-3.0.7.crate) = 03e78c8669c2a20c223772f63df943b173598d8f4714a7bc399c97bd3ec091eda1b5f12dd11f821f45e5178927a4f7621911dc228f5ab5f52f28f9eed12d13c0
|
||||
|
Loading…
Reference in new issue