Skip to content

Commit 0b95c2f

Browse files
committed
fn FASTCOVER_buildDictionary: pass ctx by reference
1 parent 8297911 commit 0b95c2f

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

lib/dictBuilder/fastcover.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ fn FASTCOVER_ctx_init<'a>(
351351
}
352352

353353
unsafe fn FASTCOVER_buildDictionary(
354-
ctx: *const FASTCOVER_ctx_t,
354+
ctx: &FASTCOVER_ctx_t,
355355
freqs: &mut [u32],
356356
dictBuffer: *mut core::ffi::c_void,
357357
dictBufferCapacity: size_t,
@@ -362,12 +362,12 @@ unsafe fn FASTCOVER_buildDictionary(
362362
let mut tail = dictBufferCapacity;
363363
let epochs = COVER_computeEpochs(
364364
dictBufferCapacity as u32,
365-
(*ctx).nbDmers as u32,
365+
ctx.nbDmers as u32,
366366
parameters.k,
367367
1,
368368
);
369369
let maxZeroScoreRun = 10;
370-
let displayLevel = (*ctx).displayLevel;
370+
let displayLevel = ctx.displayLevel;
371371
let mut zeroScoreRun = 0 as size_t;
372372
let mut lastUpdateTime = 0;
373373
let mut epoch: size_t = 0;
@@ -434,7 +434,7 @@ unsafe fn FASTCOVER_buildDictionary(
434434
}
435435
unsafe fn FASTCOVER_tryParameters(opaque: *mut core::ffi::c_void) {
436436
let data = opaque as *mut FASTCOVER_tryParameters_data_t;
437-
let ctx = (*data).ctx;
437+
let ctx = (*data).ctx.cast_mut().as_mut().unwrap();
438438
let parameters = (*data).parameters;
439439
let dictBufferCapacity = (*data).dictBufferCapacity;
440440
let totalCompressedSize = Error::GENERIC.to_error_code();
@@ -456,17 +456,17 @@ unsafe fn FASTCOVER_tryParameters(opaque: *mut core::ffi::c_void) {
456456
parameters,
457457
segmentFreqs,
458458
);
459-
let nbFinalizeSamples = ((*ctx).nbTrainSamples * (*ctx).accelParams.finalize as size_t
460-
/ 100) as core::ffi::c_uint;
459+
let nbFinalizeSamples =
460+
(ctx.nbTrainSamples * ctx.accelParams.finalize as size_t / 100) as core::ffi::c_uint;
461461
selection = COVER_selectDict(
462462
dict.add(tail),
463463
dictBufferCapacity,
464464
dictBufferCapacity.wrapping_sub(tail),
465465
ctx.samples.as_ptr(),
466466
ctx.samplesSizes.as_ptr(),
467467
nbFinalizeSamples,
468-
(*ctx).nbTrainSamples,
469-
(*ctx).nbSamples,
468+
ctx.nbTrainSamples,
469+
ctx.nbSamples,
470470
parameters,
471471
ctx.offsets.as_ptr().cast_mut(),
472472
totalCompressedSize,
@@ -604,14 +604,18 @@ pub unsafe extern "C" fn ZDICT_trainFromBuffer_fastCover(
604604
eprintln!("Building dictionary");
605605
}
606606
let segmentFreqs = calloc(1 << parameters.f, ::core::mem::size_of::<u16>()) as *mut u16;
607+
608+
let mut freqs = core::mem::take(&mut ctx.freqs);
607609
let tail = FASTCOVER_buildDictionary(
608610
&ctx,
609-
&mut ctx.freqs,
611+
&mut freqs,
610612
dictBuffer,
611613
dictBufferCapacity,
612614
coverParams,
613615
segmentFreqs,
614616
);
617+
ctx.freqs = freqs;
618+
615619
let nbFinalizeSamples =
616620
(ctx.nbTrainSamples * ctx.accelParams.finalize as size_t / 100) as core::ffi::c_uint;
617621
let dictionarySize = ZDICT_finalizeDictionary(

0 commit comments

Comments
 (0)