@@ -113,7 +113,7 @@ struct COVER_tryParameters_data_t<'a, 'b> {
113113#[ derive( Clone ) ]
114114#[ repr( C ) ]
115115pub ( super ) struct COVER_dictSelection_t {
116- dictContent : * mut u8 ,
116+ dictContent : Box < [ u8 ] > ,
117117 dictSize : size_t ,
118118 totalCompressedSize : size_t ,
119119}
@@ -979,7 +979,7 @@ pub(super) unsafe fn COVER_best_finish(
979979 parameters : ZDICT_cover_params_t ,
980980 selection : & COVER_dictSelection_t ,
981981) {
982- let dict = selection. dictContent as * mut core:: ffi:: c_void ;
982+ let dict = selection. dictContent . as_ptr ( ) as * const core:: ffi:: c_void ;
983983 let compressedSize = selection. totalCompressedSize ;
984984 let dictSize = selection. dictSize ;
985985 let mut liveJobs: size_t = 0 ;
@@ -1003,29 +1003,25 @@ pub(super) unsafe fn COVER_best_finish(
10031003 }
10041004}
10051005
1006- fn setDictSelection ( buf : * mut u8 , s : size_t , csz : size_t ) -> COVER_dictSelection_t {
1007- let mut ds = COVER_dictSelection_t {
1008- dictContent : core:: ptr:: null_mut :: < u8 > ( ) ,
1009- dictSize : 0 ,
1010- totalCompressedSize : 0 ,
1011- } ;
1012- ds. dictContent = buf;
1013- ds. dictSize = s;
1014- ds. totalCompressedSize = csz;
1015- ds
1006+ fn setDictSelection ( buf : Box < [ u8 ] > , s : size_t , csz : size_t ) -> COVER_dictSelection_t {
1007+ COVER_dictSelection_t {
1008+ dictContent : buf,
1009+ dictSize : s,
1010+ totalCompressedSize : csz,
1011+ }
10161012}
10171013
10181014pub ( super ) fn COVER_dictSelectionError ( error : size_t ) -> COVER_dictSelection_t {
1019- setDictSelection ( core :: ptr :: null_mut ( ) , 0 , error)
1015+ setDictSelection ( Box :: default ( ) , 0 , error)
10201016}
10211017
10221018pub ( super ) fn COVER_dictSelectionIsError ( selection : & COVER_dictSelection_t ) -> core:: ffi:: c_uint {
1023- ( ERR_isError ( selection. totalCompressedSize ) || selection. dictContent . is_null ( ) )
1019+ ( ERR_isError ( selection. totalCompressedSize ) || selection. dictContent . is_empty ( ) )
10241020 as core:: ffi:: c_int as core:: ffi:: c_uint
10251021}
10261022
10271023pub ( super ) unsafe fn COVER_dictSelectionFree ( selection : COVER_dictSelection_t ) {
1028- free ( selection. dictContent as * mut core :: ffi :: c_void ) ;
1024+ drop ( selection)
10291025}
10301026
10311027pub ( super ) unsafe fn COVER_selectDict (
@@ -1044,22 +1040,17 @@ pub(super) unsafe fn COVER_selectDict(
10441040 let mut largestDict = 0 ;
10451041 let mut largestCompressed = 0 ;
10461042 let customDictContentEnd = customDictContent. add ( dictContentSize) ;
1047- let largestDictbuffer = malloc ( dictBufferCapacity) as * mut u8 ;
1048- let candidateDictBuffer = malloc ( dictBufferCapacity) as * mut u8 ;
1043+ let mut largestDictbuffer: Box < [ u8 ] > = Box :: from ( vec ! [ 0u8 ; dictBufferCapacity] ) ;
1044+ let mut candidateDictBuffer: Box < [ u8 ] > = Box :: from ( vec ! [ 0 ; dictBufferCapacity] ) ;
10491045 let regressionTolerance =
10501046 params. shrinkDictMaxRegression as core:: ffi:: c_double / 100.0f64 + 1.00f64 ;
1051- if largestDictbuffer. is_null ( ) || candidateDictBuffer. is_null ( ) {
1052- free ( largestDictbuffer as * mut core:: ffi:: c_void ) ;
1053- free ( candidateDictBuffer as * mut core:: ffi:: c_void ) ;
1054- return COVER_dictSelectionError ( dictContentSize) ;
1055- }
10561047 memcpy (
1057- largestDictbuffer as * mut core:: ffi:: c_void ,
1048+ largestDictbuffer. as_mut_ptr ( ) as * mut core:: ffi:: c_void ,
10581049 customDictContent as * const core:: ffi:: c_void ,
10591050 dictContentSize,
10601051 ) ;
10611052 dictContentSize = ZDICT_finalizeDictionary (
1062- largestDictbuffer as * mut core:: ffi:: c_void ,
1053+ largestDictbuffer. as_mut_ptr ( ) as * mut core:: ffi:: c_void ,
10631054 dictBufferCapacity,
10641055 customDictContent as * const core:: ffi:: c_void ,
10651056 dictContentSize,
@@ -1069,8 +1060,8 @@ pub(super) unsafe fn COVER_selectDict(
10691060 params. zParams ,
10701061 ) ;
10711062 if ZDICT_isError ( dictContentSize) != 0 {
1072- free ( largestDictbuffer as * mut core :: ffi :: c_void ) ;
1073- free ( candidateDictBuffer as * mut core :: ffi :: c_void ) ;
1063+ drop ( largestDictbuffer) ;
1064+ drop ( candidateDictBuffer) ;
10741065 return COVER_dictSelectionError ( dictContentSize) ;
10751066 }
10761067 totalCompressedSize = COVER_checkTotalCompressedSize (
@@ -1080,29 +1071,29 @@ pub(super) unsafe fn COVER_selectDict(
10801071 offsets,
10811072 nbCheckSamples,
10821073 nbSamples,
1083- largestDictbuffer,
1074+ largestDictbuffer. as_mut_ptr ( ) ,
10841075 dictContentSize,
10851076 ) ;
10861077 if ERR_isError ( totalCompressedSize) {
1087- free ( largestDictbuffer as * mut core :: ffi :: c_void ) ;
1088- free ( candidateDictBuffer as * mut core :: ffi :: c_void ) ;
1078+ drop ( largestDictbuffer) ;
1079+ drop ( candidateDictBuffer) ;
10891080 return COVER_dictSelectionError ( totalCompressedSize) ;
10901081 }
10911082 if params. shrinkDict == 0 {
1092- free ( candidateDictBuffer as * mut core :: ffi :: c_void ) ;
1083+ drop ( candidateDictBuffer) ;
10931084 return setDictSelection ( largestDictbuffer, dictContentSize, totalCompressedSize) ;
10941085 }
10951086 largestDict = dictContentSize;
10961087 largestCompressed = totalCompressedSize;
10971088 dictContentSize = ZDICT_DICTSIZE_MIN as size_t ;
10981089 while dictContentSize < largestDict {
10991090 memcpy (
1100- candidateDictBuffer as * mut core:: ffi:: c_void ,
1101- largestDictbuffer as * const core:: ffi:: c_void ,
1091+ candidateDictBuffer. as_mut_ptr ( ) as * mut core:: ffi:: c_void ,
1092+ largestDictbuffer. as_ptr ( ) as * const core:: ffi:: c_void ,
11021093 largestDict,
11031094 ) ;
11041095 dictContentSize = ZDICT_finalizeDictionary (
1105- candidateDictBuffer as * mut core:: ffi:: c_void ,
1096+ candidateDictBuffer. as_mut_ptr ( ) as * mut core:: ffi:: c_void ,
11061097 dictBufferCapacity,
11071098 customDictContentEnd. offset ( -( dictContentSize as isize ) ) as * const core:: ffi:: c_void ,
11081099 dictContentSize,
@@ -1112,8 +1103,8 @@ pub(super) unsafe fn COVER_selectDict(
11121103 params. zParams ,
11131104 ) ;
11141105 if ZDICT_isError ( dictContentSize) != 0 {
1115- free ( largestDictbuffer as * mut core :: ffi :: c_void ) ;
1116- free ( candidateDictBuffer as * mut core :: ffi :: c_void ) ;
1106+ drop ( largestDictbuffer) ;
1107+ drop ( candidateDictBuffer) ;
11171108 return COVER_dictSelectionError ( dictContentSize) ;
11181109 }
11191110 totalCompressedSize = COVER_checkTotalCompressedSize (
@@ -1123,27 +1114,28 @@ pub(super) unsafe fn COVER_selectDict(
11231114 offsets,
11241115 nbCheckSamples,
11251116 nbSamples,
1126- candidateDictBuffer,
1117+ candidateDictBuffer. as_mut_ptr ( ) ,
11271118 dictContentSize,
11281119 ) ;
11291120 if ERR_isError ( totalCompressedSize) {
1130- free ( largestDictbuffer as * mut core :: ffi :: c_void ) ;
1131- free ( candidateDictBuffer as * mut core :: ffi :: c_void ) ;
1121+ drop ( largestDictbuffer) ;
1122+ drop ( candidateDictBuffer) ;
11321123 return COVER_dictSelectionError ( totalCompressedSize) ;
11331124 }
11341125 if totalCompressedSize as core:: ffi:: c_double
11351126 <= largestCompressed as core:: ffi:: c_double * regressionTolerance
11361127 {
1137- free ( largestDictbuffer as * mut core :: ffi :: c_void ) ;
1128+ drop ( largestDictbuffer) ;
11381129 return setDictSelection ( candidateDictBuffer, dictContentSize, totalCompressedSize) ;
11391130 }
11401131 dictContentSize *= 2 ;
11411132 }
11421133 dictContentSize = largestDict;
11431134 totalCompressedSize = largestCompressed;
1144- free ( candidateDictBuffer as * mut core :: ffi :: c_void ) ;
1135+ drop ( candidateDictBuffer) ;
11451136 setDictSelection ( largestDictbuffer, dictContentSize, totalCompressedSize)
11461137}
1138+
11471139unsafe fn COVER_tryParameters ( opaque : * mut core:: ffi:: c_void ) {
11481140 let data = opaque as * mut COVER_tryParameters_data_t ;
11491141 let ctx = ( * data) . ctx . cast_mut ( ) ;
0 commit comments