@@ -436,43 +436,39 @@ unsafe fn FASTCOVER_tryParameters(opaque: *mut core::ffi::c_void) {
436436 let dictBufferCapacity = ( * data) . dictBufferCapacity ;
437437 let totalCompressedSize = Error :: GENERIC . to_error_code ( ) ;
438438 let mut segmentFreqs: Box < [ u16 ] > = Box :: from ( vec ! [ 0u16 ; 1 << ctx. f] ) ;
439- let dict = malloc ( dictBufferCapacity) as * mut u8 ;
439+ let mut dict: Box < [ u8 ] > = Box :: from ( vec ! [ 0 ; dictBufferCapacity] ) ;
440440 let mut selection = COVER_dictSelectionError ( Error :: GENERIC . to_error_code ( ) ) ;
441441 let displayLevel = ctx. displayLevel ;
442442 let mut freqs = ctx. freqs . clone ( ) ;
443- if dict. is_null ( ) {
444- if displayLevel >= 1 {
445- eprintln ! ( "Failed to allocate buffers: out of memory" ) ;
446- }
447- } else {
448- let tail = FASTCOVER_buildDictionary (
449- ctx,
450- & mut freqs,
451- dict as * mut core:: ffi:: c_void ,
452- dictBufferCapacity,
453- parameters,
454- & mut segmentFreqs,
455- ) ;
456- let nbFinalizeSamples =
457- ( ctx. nbTrainSamples * ctx. accelParams . finalize as size_t / 100 ) as core:: ffi:: c_uint ;
458- selection = COVER_selectDict (
459- dict. add ( tail) ,
460- dictBufferCapacity,
461- dictBufferCapacity. wrapping_sub ( tail) ,
462- ctx. samples . as_ptr ( ) ,
463- ctx. samplesSizes . as_ptr ( ) ,
464- nbFinalizeSamples,
465- ctx. nbTrainSamples ,
466- ctx. nbSamples ,
467- parameters,
468- ctx. offsets . as_ptr ( ) . cast_mut ( ) ,
469- totalCompressedSize,
470- ) ;
471- if COVER_dictSelectionIsError ( selection) != 0 && displayLevel >= 1 {
472- eprintln ! ( "Failed to select dictionary" ) ;
473- }
443+
444+ let tail = FASTCOVER_buildDictionary (
445+ ctx,
446+ & mut freqs,
447+ dict. as_mut_ptr ( ) as * mut core:: ffi:: c_void ,
448+ dictBufferCapacity,
449+ parameters,
450+ & mut segmentFreqs,
451+ ) ;
452+ let nbFinalizeSamples =
453+ ( ctx. nbTrainSamples * ctx. accelParams . finalize as size_t / 100 ) as core:: ffi:: c_uint ;
454+ selection = COVER_selectDict (
455+ dict. as_mut_ptr ( ) . add ( tail) ,
456+ dictBufferCapacity,
457+ dictBufferCapacity. wrapping_sub ( tail) ,
458+ ctx. samples . as_ptr ( ) ,
459+ ctx. samplesSizes . as_ptr ( ) ,
460+ nbFinalizeSamples,
461+ ctx. nbTrainSamples ,
462+ ctx. nbSamples ,
463+ parameters,
464+ ctx. offsets . as_ptr ( ) . cast_mut ( ) ,
465+ totalCompressedSize,
466+ ) ;
467+ if COVER_dictSelectionIsError ( selection) != 0 && displayLevel >= 1 {
468+ eprintln ! ( "Failed to select dictionary" ) ;
474469 }
475- free ( dict as * mut core:: ffi:: c_void ) ;
470+
471+ drop ( dict) ;
476472 COVER_best_finish ( ( * data) . best . as_mut ( ) . unwrap ( ) , parameters, selection) ;
477473 free ( data as * mut core:: ffi:: c_void ) ;
478474 drop ( segmentFreqs) ;
0 commit comments