Skip to content

Commit ade2fd1

Browse files
committed
fn COVER_selectDict: pass customDictionaryContent as a slice
1 parent 553d3d2 commit ade2fd1

File tree

2 files changed

+8
-16
lines changed

2 files changed

+8
-16
lines changed

lib/dictBuilder/cover.rs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ pub(super) unsafe fn COVER_dictSelectionFree(selection: COVER_dictSelection_t) {
10231023
}
10241024

10251025
pub(super) unsafe fn COVER_selectDict(
1026-
customDictContent: *mut u8,
1026+
customDictContent: &[u8],
10271027
dictBufferCapacity: size_t,
10281028
mut dictContentSize: size_t,
10291029
samplesBuffer: *const u8,
@@ -1037,20 +1037,16 @@ pub(super) unsafe fn COVER_selectDict(
10371037
) -> COVER_dictSelection_t {
10381038
let mut largestDict = 0;
10391039
let mut largestCompressed = 0;
1040-
let customDictContentEnd = customDictContent.add(dictContentSize);
1040+
let customDictContentEnd = customDictContent.as_ptr().add(dictContentSize);
10411041
let mut largestDictbuffer: Box<[u8]> = Box::from(vec![0u8; dictBufferCapacity]);
1042-
let mut candidateDictBuffer: Box<[u8]> = Box::from(vec![0; dictBufferCapacity]);
1042+
let mut candidateDictBuffer: Box<[u8]> = Box::from(vec![0u8; dictBufferCapacity]);
10431043
let regressionTolerance =
10441044
params.shrinkDictMaxRegression as core::ffi::c_double / 100.0f64 + 1.00f64;
1045-
memcpy(
1046-
largestDictbuffer.as_mut_ptr() as *mut core::ffi::c_void,
1047-
customDictContent as *const core::ffi::c_void,
1048-
dictContentSize,
1049-
);
1045+
largestDictbuffer[..customDictContent.len()].copy_from_slice(customDictContent);
10501046
dictContentSize = ZDICT_finalizeDictionary(
10511047
largestDictbuffer.as_mut_ptr() as *mut core::ffi::c_void,
10521048
dictBufferCapacity,
1053-
customDictContent as *const core::ffi::c_void,
1049+
customDictContent.as_ptr() as *const core::ffi::c_void,
10541050
dictContentSize,
10551051
samplesBuffer as *const core::ffi::c_void,
10561052
samplesSizes,
@@ -1085,11 +1081,7 @@ pub(super) unsafe fn COVER_selectDict(
10851081
largestCompressed = totalCompressedSize;
10861082
dictContentSize = ZDICT_DICTSIZE_MIN as size_t;
10871083
while dictContentSize < largestDict {
1088-
memcpy(
1089-
candidateDictBuffer.as_mut_ptr() as *mut core::ffi::c_void,
1090-
largestDictbuffer.as_ptr() as *const core::ffi::c_void,
1091-
largestDict,
1092-
);
1084+
candidateDictBuffer[..largestDict].copy_from_slice(&largestDictbuffer[..largestDict]);
10931085
dictContentSize = ZDICT_finalizeDictionary(
10941086
candidateDictBuffer.as_mut_ptr() as *mut core::ffi::c_void,
10951087
dictBufferCapacity,
@@ -1156,7 +1148,7 @@ unsafe fn COVER_tryParameters(opaque: *mut core::ffi::c_void) {
11561148
parameters,
11571149
);
11581150
selection = COVER_selectDict(
1159-
dict.as_mut_ptr().add(tail),
1151+
&dict[tail..],
11601152
dictBufferCapacity,
11611153
dictBufferCapacity.wrapping_sub(tail),
11621154
(*ctx).samples.as_ptr(),

lib/dictBuilder/fastcover.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ unsafe fn FASTCOVER_tryParameters(opaque: *mut core::ffi::c_void) {
453453
let nbFinalizeSamples =
454454
(ctx.nbTrainSamples * ctx.accelParams.finalize as size_t / 100) as core::ffi::c_uint;
455455
selection = COVER_selectDict(
456-
dict.as_mut_ptr().add(tail),
456+
&dict[tail..],
457457
dictBufferCapacity,
458458
dictBufferCapacity.wrapping_sub(tail),
459459
ctx.samples.as_ptr(),

0 commit comments

Comments
 (0)