@@ -813,7 +813,7 @@ fn FSEv07_decompress(dst: Writer<'_>, cSrc: &[u8]) -> Result<usize, Error> {
813813 FSEv07_buildDTable ( & mut dt, & counting, maxSymbolValue, tableLog) ?;
814814 FSEv07_decompress_usingDTable ( dst, ip, & dt)
815815}
816- unsafe fn HUFv07_readDTableX2 ( DTable : & mut HUFv07_DTable , src : & [ u8 ] ) -> Result < usize , Error > {
816+ fn HUFv07_readDTableX2 ( DTable : & mut HUFv07_DTable , src : & [ u8 ] ) -> Result < usize , Error > {
817817 let mut huffWeight: [ u8 ; HUFv07_SYMBOLVALUE_MAX + 1 ] = [ 0 ; HUFv07_SYMBOLVALUE_MAX + 1 ] ;
818818 let mut rankVal: [ u32 ; HUFv07_TABLELOG_ABSOLUTEMAX + 1 ] = [ 0 ; HUFv07_TABLELOG_ABSOLUTEMAX + 1 ] ;
819819 let mut tableLog = 0 ;
@@ -834,33 +834,25 @@ unsafe fn HUFv07_readDTableX2(DTable: &mut HUFv07_DTable, src: &[u8]) -> Result<
834834 dtd. tableLog = tableLog as u8 ;
835835 DTable . description = dtd;
836836 let dt = DTable . as_x2_mut ( ) ;
837- let mut n: u32 = 0 ;
838837 let mut nextRankStart = 0u32 ;
839- n = 1 ;
840- while n < tableLog. wrapping_add ( 1 ) {
838+ for n in 1 ..tableLog as usize + 1 {
841839 let current = nextRankStart;
842- nextRankStart = nextRankStart
843- . wrapping_add ( * rankVal. as_mut_ptr ( ) . offset ( n as isize ) << n. wrapping_sub ( 1 ) ) ;
844- * rankVal. as_mut_ptr ( ) . offset ( n as isize ) = current;
845- n = n. wrapping_add ( 1 ) ;
846- }
847- let mut n_0: u32 = 0 ;
848- n_0 = 0 ;
849- while n_0 < nbSymbols {
850- let w = * huffWeight. as_mut_ptr ( ) . offset ( n_0 as isize ) as u32 ;
851- let length = ( ( 1 ) << w >> 1 ) as u32 ;
852- let mut i: u32 = 0 ;
853- let mut D = HUFv07_DEltX2 { byte : 0 , nbBits : 0 } ;
854- D . byte = n_0 as u8 ;
855- D . nbBits = tableLog. wrapping_add ( 1 ) . wrapping_sub ( w) as u8 ;
856- i = * rankVal. as_mut_ptr ( ) . offset ( w as isize ) ;
857- while i < ( * rankVal. as_mut_ptr ( ) . offset ( w as isize ) ) . wrapping_add ( length) {
840+ nextRankStart += rankVal[ n] << ( n - 1 ) ;
841+ rankVal[ n] = current;
842+ }
843+ for n in 0 ..nbSymbols {
844+ let w = huffWeight[ n as usize ] ;
845+ let length = ( 1 << w >> 1 ) as u32 ;
846+ let D = HUFv07_DEltX2 {
847+ byte : n as u8 ,
848+ nbBits : tableLog. wrapping_add ( 1 ) . wrapping_sub ( w as u32 ) as u8 ,
849+ } ;
850+ let mut i = rankVal[ usize:: from ( w) ] ;
851+ while i < ( rankVal[ usize:: from ( w) ] ) . wrapping_add ( length) {
858852 dt[ i as usize ] = D ;
859- i = i . wrapping_add ( 1 ) ;
853+ i += 1 ;
860854 }
861- let fresh11 = & mut ( * rankVal. as_mut_ptr ( ) . offset ( w as isize ) ) ;
862- * fresh11 = ( * fresh11) . wrapping_add ( length) ;
863- n_0 = n_0. wrapping_add ( 1 ) ;
855+ rankVal[ usize:: from ( w) ] += length;
864856 }
865857 Ok ( iSize)
866858}
@@ -922,13 +914,11 @@ fn HUFv07_decompress1X2_DCtx(
922914 dst : Writer < ' _ > ,
923915 cSrc : & [ u8 ] ,
924916) -> Result < ( ) , Error > {
925- let mut ip = cSrc;
926- let hSize = unsafe { HUFv07_readDTableX2 ( DCtx , ip) ? } ;
917+ let hSize = HUFv07_readDTableX2 ( DCtx , cSrc) ?;
927918 if hSize >= cSrc. len ( ) {
928919 return Err ( Error :: srcSize_wrong) ;
929920 }
930- ip = & ip[ hSize..] ;
931- HUFv07_decompress1X2_usingDTable_internal ( dst, ip, DCtx )
921+ HUFv07_decompress1X2_usingDTable_internal ( dst, & cSrc[ hSize..] , DCtx )
932922}
933923unsafe fn HUFv07_decompress4X2_usingDTable_internal (
934924 mut dst : Writer < ' _ > ,
@@ -1078,13 +1068,11 @@ fn HUFv07_decompress4X2_DCtx(
10781068 dst : Writer < ' _ > ,
10791069 cSrc : & [ u8 ] ,
10801070) -> Result < usize , Error > {
1081- let mut ip = cSrc;
1082- let hSize = unsafe { HUFv07_readDTableX2 ( dctx, ip) ? } ;
1071+ let hSize = HUFv07_readDTableX2 ( dctx, cSrc) ?;
10831072 if hSize >= cSrc. len ( ) {
10841073 return Err ( Error :: srcSize_wrong) ;
10851074 }
1086- ip = & ip[ hSize..] ;
1087- unsafe { HUFv07_decompress4X2_usingDTable_internal ( dst, ip, dctx) }
1075+ unsafe { HUFv07_decompress4X2_usingDTable_internal ( dst, & cSrc[ hSize..] , dctx) }
10881076}
10891077unsafe fn HUFv07_fillDTableX4Level2 (
10901078 DTable : & mut [ HUFv07_DEltX4 ] ,
0 commit comments