@@ -715,18 +715,19 @@ unsafe fn ZDICT_trainBuffer_legacy(
715715 free ( filePos as * mut core:: ffi:: c_void ) ;
716716 result
717717}
718- unsafe fn ZDICT_fillNoise ( buffer : * mut core:: ffi:: c_void , length : size_t ) {
719- let prime1 = 2654435761 as core:: ffi:: c_uint ;
720- let prime2 = 2246822519 as core:: ffi:: c_uint ;
718+
719+ fn ZDICT_fillNoise ( buffer : & mut [ u8 ] ) {
720+ const prime1: u32 = 2654435761 ;
721+ const prime2: u32 = 2246822519 ;
722+
721723 let mut acc = prime1;
722- let mut p = 0 ;
723- p = 0 ;
724- while p < length {
724+
725+ for e in buffer. iter_mut ( ) {
725726 acc = acc. wrapping_mul ( prime2) ;
726- * ( buffer as * mut core:: ffi:: c_uchar ) . add ( p) = ( acc >> 21 ) as core:: ffi:: c_uchar ;
727- p = p. wrapping_add ( 1 ) ;
727+ * e = ( acc >> 21 ) as u8 ;
728728 }
729729}
730+
730731const MAXREPOFFSET : core:: ffi:: c_int = 1024 ;
731732unsafe fn ZDICT_countEStats (
732733 esr : EStats_ress_t ,
@@ -1569,31 +1570,21 @@ pub unsafe extern "C" fn ZDICT_trainFromBuffer_legacy(
15691570 nbSamples : core:: ffi:: c_uint ,
15701571 params : ZDICT_legacy_params_t ,
15711572) -> size_t {
1572- let mut result: size_t = 0 ;
1573- let mut newBuff = core:: ptr:: null_mut :: < core:: ffi:: c_void > ( ) ;
15741573 let sBuffSize = ZDICT_totalSampleSize ( samplesSizes, nbSamples) ;
15751574 if sBuffSize < ZDICT_MIN_SAMPLES_SIZE as size_t {
15761575 return 0 ;
15771576 }
1578- newBuff = malloc ( sBuffSize. wrapping_add ( NOISELENGTH as size_t ) ) ;
1579- if newBuff. is_null ( ) {
1580- return Error :: memory_allocation. to_error_code ( ) ;
1581- }
1582- memcpy ( newBuff, samplesBuffer, sBuffSize) ;
1583- ZDICT_fillNoise (
1584- ( newBuff as * mut core:: ffi:: c_char ) . add ( sBuffSize) as * mut core:: ffi:: c_void ,
1585- NOISELENGTH as size_t ,
1586- ) ;
1587- result = ZDICT_trainFromBuffer_unsafe_legacy (
1577+ let mut new_buf = vec ! [ 0u8 ; sBuffSize. wrapping_add( NOISELENGTH as size_t) ] ;
1578+ core:: ptr:: copy_nonoverlapping ( samplesBuffer. cast :: < u8 > ( ) , new_buf. as_mut_ptr ( ) , sBuffSize) ;
1579+ ZDICT_fillNoise ( & mut new_buf[ sBuffSize..] ) ;
1580+ ZDICT_trainFromBuffer_unsafe_legacy (
15881581 dictBuffer,
15891582 dictBufferCapacity,
1590- newBuff ,
1583+ new_buf . as_ptr ( ) . cast :: < core :: ffi :: c_void > ( ) ,
15911584 samplesSizes,
15921585 nbSamples,
15931586 params,
1594- ) ;
1595- free ( newBuff) ;
1596- result
1587+ )
15971588}
15981589
15991590#[ cfg_attr( feature = "export-symbols" , export_name = crate :: prefix!( ZDICT_trainFromBuffer ) ) ]
0 commit comments