Skip to content

Commit a391153

Browse files
committed
fastcover.rs: fix mutable aliasing bugs
1 parent f59836f commit a391153

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lib/dictBuilder/fastcover.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ struct FASTCOVER_ctx_t<'a> {
4343
}
4444

4545
#[repr(C)]
46-
struct FASTCOVER_tryParameters_data_t<'a> {
47-
ctx: *const FASTCOVER_ctx_t<'a>,
48-
best: *mut COVER_best_t,
46+
struct FASTCOVER_tryParameters_data_t<'a, 'b> {
47+
ctx: &'b FASTCOVER_ctx_t<'a>,
48+
best: &'b COVER_best_t,
4949
dictBufferCapacity: size_t,
5050
parameters: ZDICT_cover_params_t,
5151
}
@@ -424,7 +424,7 @@ unsafe fn FASTCOVER_buildDictionary(
424424
}
425425
unsafe fn FASTCOVER_tryParameters(opaque: *mut core::ffi::c_void) {
426426
let data = opaque as *mut FASTCOVER_tryParameters_data_t;
427-
let ctx = (*data).ctx.as_ref().unwrap();
427+
let ctx = (*data).ctx;
428428
let parameters = (*data).parameters;
429429
let dictBufferCapacity = (*data).dictBufferCapacity;
430430
let totalCompressedSize = Error::GENERIC.to_error_code();
@@ -463,7 +463,7 @@ unsafe fn FASTCOVER_tryParameters(opaque: *mut core::ffi::c_void) {
463463
}
464464

465465
drop(dict);
466-
COVER_best_finish((*data).best.as_mut().unwrap(), parameters, &selection);
466+
COVER_best_finish((*data).best, parameters, &selection);
467467
free(data as *mut core::ffi::c_void);
468468
drop(segmentFreqs);
469469
COVER_dictSelectionFree(selection);
@@ -729,7 +729,7 @@ pub unsafe extern "C" fn ZDICT_optimizeTrainFromBuffer_fastCover(
729729
return Error::memory_allocation.to_error_code();
730730
}
731731
}
732-
let mut best = COVER_best_t::new();
732+
let best = COVER_best_t::new();
733733
ptr::write_bytes(
734734
&mut coverParams as *mut ZDICT_cover_params_t as *mut u8,
735735
0,
@@ -806,7 +806,7 @@ pub unsafe extern "C" fn ZDICT_optimizeTrainFromBuffer_fastCover(
806806
return Error::memory_allocation.to_error_code();
807807
}
808808
(*data).ctx = &ctx;
809-
(*data).best = &mut best;
809+
(*data).best = &best;
810810
(*data).dictBufferCapacity = dictBufferCapacity;
811811
(*data).parameters = coverParams;
812812
(*data).parameters.k = k;
@@ -818,7 +818,7 @@ pub unsafe extern "C" fn ZDICT_optimizeTrainFromBuffer_fastCover(
818818
if !FASTCOVER_checkParameters(
819819
(*data).parameters,
820820
dictBufferCapacity,
821-
(*(*data).ctx).f,
821+
(*data).ctx.f,
822822
accel,
823823
) {
824824
if displayLevel >= 1 {

0 commit comments

Comments
 (0)