Skip to content

Commit 60fec5a

Browse files
committed
fn ZDICT_fillNoise: make safe
1 parent 55363e8 commit 60fec5a

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

lib/dictBuilder/zdict.rs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -716,18 +716,19 @@ unsafe fn ZDICT_trainBuffer_legacy(
716716
free(filePos as *mut core::ffi::c_void);
717717
result
718718
}
719-
unsafe fn ZDICT_fillNoise(buffer: *mut core::ffi::c_void, length: size_t) {
720-
let prime1 = 2654435761 as core::ffi::c_uint;
721-
let prime2 = 2246822519 as core::ffi::c_uint;
719+
720+
fn fill_noise(buffer: &mut [u8]) {
721+
const prime1: u32 = 2654435761;
722+
const prime2: u32 = 2246822519;
723+
722724
let mut acc = prime1;
723-
let mut p = 0;
724-
p = 0;
725-
while p < length {
725+
726+
for v in buffer.iter_mut() {
726727
acc = acc.wrapping_mul(prime2);
727-
*(buffer as *mut core::ffi::c_uchar).add(p) = (acc >> 21) as core::ffi::c_uchar;
728-
p = p.wrapping_add(1);
728+
*v = (acc >> 21) as u8;
729729
}
730730
}
731+
731732
const MAXREPOFFSET: core::ffi::c_int = 1024;
732733
unsafe fn ZDICT_countEStats(
733734
esr: EStats_ress_t,
@@ -1606,10 +1607,12 @@ pub unsafe extern "C" fn ZDICT_trainFromBuffer_legacy(
16061607
return Error::memory_allocation.to_error_code();
16071608
}
16081609
memcpy(newBuff, samplesBuffer, sBuffSize);
1609-
ZDICT_fillNoise(
1610-
(newBuff as *mut core::ffi::c_char).add(sBuffSize) as *mut core::ffi::c_void,
1610+
1611+
fill_noise(core::slice::from_raw_parts_mut(
1612+
newBuff.cast::<u8>().byte_add(sBuffSize),
16111613
NOISELENGTH as size_t,
1612-
);
1614+
));
1615+
16131616
result = ZDICT_trainFromBuffer_unsafe_legacy(
16141617
dictBuffer,
16151618
dictBufferCapacity,
@@ -1714,7 +1717,7 @@ mod test {
17141717
#[test]
17151718
fn test_fill_noise() {
17161719
let mut buf = vec![0u8; 16];
1717-
unsafe { ZDICT_fillNoise(buf.as_mut_ptr().cast(), buf.len()) };
1720+
fill_noise(&mut buf);
17181721
assert_eq!(
17191722
buf,
17201723
[226, 51, 247, 105, 221, 225, 137, 112, 5, 188, 15, 79, 183, 243, 110, 209]

0 commit comments

Comments
 (0)