@@ -1955,32 +1955,20 @@ impl ByteOrder for BigEndian {
1955
1955
1956
1956
#[ inline]
1957
1957
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)
1969
1963
}
1970
1964
1971
1965
#[ inline]
1972
1966
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)
1984
1972
}
1985
1973
1986
1974
#[ inline]
@@ -2155,24 +2143,18 @@ impl ByteOrder for LittleEndian {
2155
2143
2156
2144
#[ inline]
2157
2145
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)
2165
2150
}
2166
2151
2167
2152
#[ inline]
2168
2153
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)
2176
2158
}
2177
2159
2178
2160
#[ inline]
0 commit comments