@@ -1955,32 +1955,20 @@ impl ByteOrder for BigEndian {
19551955
19561956 #[ inline]
19571957 fn read_uint ( buf : & [ u8 ] , nbytes : usize ) -> u64 {
1958- assert ! ( 1 <= nbytes && nbytes <= 8 && nbytes <= buf. len( ) ) ;
1959- let mut out = 0u64 ;
1960- let ptr_out = & mut out as * mut u64 as * mut u8 ;
1961- unsafe {
1962- copy_nonoverlapping (
1963- buf. as_ptr ( ) ,
1964- ptr_out. offset ( ( 8 - nbytes) as isize ) ,
1965- nbytes,
1966- ) ;
1967- }
1968- out. to_be ( )
1958+ let mut out = [ 0 ; 8 ] ;
1959+ assert ! ( 1 <= nbytes && nbytes <= out. len( ) && nbytes <= buf. len( ) ) ;
1960+ let start = out. len ( ) - nbytes;
1961+ out[ start..] . copy_from_slice ( & buf[ ..nbytes] ) ;
1962+ u64:: from_be_bytes ( out)
19691963 }
19701964
19711965 #[ inline]
19721966 fn read_uint128 ( buf : & [ u8 ] , nbytes : usize ) -> u128 {
1973- assert ! ( 1 <= nbytes && nbytes <= 16 && nbytes <= buf. len( ) ) ;
1974- let mut out: u128 = 0 ;
1975- let ptr_out = & mut out as * mut u128 as * mut u8 ;
1976- unsafe {
1977- copy_nonoverlapping (
1978- buf. as_ptr ( ) ,
1979- ptr_out. offset ( ( 16 - nbytes) as isize ) ,
1980- nbytes,
1981- ) ;
1982- }
1983- out. to_be ( )
1967+ let mut out = [ 0 ; 16 ] ;
1968+ assert ! ( 1 <= nbytes && nbytes <= out. len( ) && nbytes <= buf. len( ) ) ;
1969+ let start = out. len ( ) - nbytes;
1970+ out[ start..] . copy_from_slice ( & buf[ ..nbytes] ) ;
1971+ u128:: from_be_bytes ( out)
19841972 }
19851973
19861974 #[ inline]
@@ -2155,24 +2143,18 @@ impl ByteOrder for LittleEndian {
21552143
21562144 #[ inline]
21572145 fn read_uint ( buf : & [ u8 ] , nbytes : usize ) -> u64 {
2158- assert ! ( 1 <= nbytes && nbytes <= 8 && nbytes <= buf. len( ) ) ;
2159- let mut out = 0u64 ;
2160- let ptr_out = & mut out as * mut u64 as * mut u8 ;
2161- unsafe {
2162- copy_nonoverlapping ( buf. as_ptr ( ) , ptr_out, nbytes) ;
2163- }
2164- out. to_le ( )
2146+ let mut out = [ 0 ; 8 ] ;
2147+ assert ! ( 1 <= nbytes && nbytes <= out. len( ) && nbytes <= buf. len( ) ) ;
2148+ out[ ..nbytes] . copy_from_slice ( & buf[ ..nbytes] ) ;
2149+ u64:: from_le_bytes ( out)
21652150 }
21662151
21672152 #[ inline]
21682153 fn read_uint128 ( buf : & [ u8 ] , nbytes : usize ) -> u128 {
2169- assert ! ( 1 <= nbytes && nbytes <= 16 && nbytes <= buf. len( ) ) ;
2170- let mut out: u128 = 0 ;
2171- let ptr_out = & mut out as * mut u128 as * mut u8 ;
2172- unsafe {
2173- copy_nonoverlapping ( buf. as_ptr ( ) , ptr_out, nbytes) ;
2174- }
2175- out. to_le ( )
2154+ let mut out = [ 0 ; 16 ] ;
2155+ assert ! ( 1 <= nbytes && nbytes <= out. len( ) && nbytes <= buf. len( ) ) ;
2156+ out[ ..nbytes] . copy_from_slice ( & buf[ ..nbytes] ) ;
2157+ u128:: from_le_bytes ( out)
21762158 }
21772159
21782160 #[ inline]
0 commit comments