Skip to content

Commit 4475e52

Browse files
michielp1807folkertdev
authored andcommitted
ZDICT_trainBuffer_legacy: make reverseSuffix a vec
1 parent 1d6b32c commit 4475e52

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

lib/dictBuilder/zdict.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -593,8 +593,6 @@ unsafe fn ZDICT_trainBuffer_legacy(
593593
mut minRatio: core::ffi::c_uint,
594594
notificationLevel: u32,
595595
) -> size_t {
596-
let mut suffix = vec![0u32; bufferSize];
597-
let reverseSuffix = malloc(bufferSize.wrapping_mul(::core::mem::size_of::<u32>())) as *mut u32;
598596
let doneMarks = malloc(
599597
bufferSize
600598
.wrapping_add(16)
@@ -610,7 +608,7 @@ unsafe fn ZDICT_trainBuffer_legacy(
610608
if notificationLevel >= 2 {
611609
eprintln!("\r{:70 }\r", ""); // clean display line
612610
}
613-
if reverseSuffix.is_null() || doneMarks.is_null() || filePos.is_null() {
611+
if doneMarks.is_null() || filePos.is_null() {
614612
result = Error::memory_allocation.to_error_code();
615613
} else {
616614
if minRatio < MINRATIO {
@@ -638,6 +636,7 @@ unsafe fn ZDICT_trainBuffer_legacy(
638636
bufferSize >> 20,
639637
);
640638
}
639+
let mut suffix = vec![0u32; bufferSize];
641640
let divSuftSortResult = divsufsort(
642641
core::slice::from_raw_parts(buffer as *const u8, bufferSize),
643642
std::mem::transmute::<&mut [u32], &mut [i32]>(&mut suffix[..]),
@@ -647,10 +646,11 @@ unsafe fn ZDICT_trainBuffer_legacy(
647646
result = Error::GENERIC.to_error_code();
648647
} else {
649648
// build reverse suffix sort
649+
let mut reverseSuffix = vec![0u32; bufferSize];
650650
let mut pos: size_t = 0;
651651
pos = 0;
652652
while pos < bufferSize {
653-
*reverseSuffix.offset(suffix[pos] as isize) = pos as u32;
653+
reverseSuffix[suffix[pos] as usize] = pos as u32;
654654
pos = pos.wrapping_add(1);
655655
}
656656
// Note: filePos tracks borders between samples.
@@ -681,7 +681,7 @@ unsafe fn ZDICT_trainBuffer_legacy(
681681
solution = ZDICT_analyzePos(
682682
doneMarks,
683683
&suffix,
684-
*reverseSuffix.offset(cursor as isize),
684+
reverseSuffix[cursor as usize],
685685
buffer,
686686
minRatio,
687687
notificationLevel,
@@ -707,7 +707,6 @@ unsafe fn ZDICT_trainBuffer_legacy(
707707
}
708708
}
709709
}
710-
free(reverseSuffix as *mut core::ffi::c_void);
711710
free(doneMarks as *mut core::ffi::c_void);
712711
free(filePos as *mut core::ffi::c_void);
713712
result

0 commit comments

Comments
 (0)