File tree Expand file tree Collapse file tree 1 file changed +14
-7
lines changed
Expand file tree Collapse file tree 1 file changed +14
-7
lines changed Original file line number Diff line number Diff line change 44
55package flate
66
7- import (
8- "internal/byteorder"
9- )
10-
117type indexer interface {
128 int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64
139}
@@ -19,15 +15,26 @@ func loadLE8[I indexer](b []byte, i I) byte {
1915
2016// loadLE32 will load from b at index i.
2117func loadLE32 [I indexer ](b []byte , i I ) uint32 {
22- return byteorder .LEUint32 (b [i :])
18+ b = b [i : i + 4 ]
19+ return uint32 (b [0 ]) | uint32 (b [1 ])<< 8 | uint32 (b [2 ])<< 16 | uint32 (b [3 ])<< 24
2320}
2421
2522// loadLE64 will load from b at index i.
2623func loadLE64 [I indexer ](b []byte , i I ) uint64 {
27- return byteorder .LEUint64 (b [i :])
24+ b = b [i : i + 8 ]
25+ return uint64 (b [0 ]) | uint64 (b [1 ])<< 8 | uint64 (b [2 ])<< 16 | uint64 (b [3 ])<< 24 |
26+ uint64 (b [4 ])<< 32 | uint64 (b [5 ])<< 40 | uint64 (b [6 ])<< 48 | uint64 (b [7 ])<< 56
2827}
2928
3029// storeLE64 will store v at start of b.
3130func storeLE64 (b []byte , v uint64 ) {
32- byteorder .LEPutUint64 (b , v )
31+ _ = b [7 ] // early bounds check to guarantee safety of writes below
32+ b [0 ] = byte (v )
33+ b [1 ] = byte (v >> 8 )
34+ b [2 ] = byte (v >> 16 )
35+ b [3 ] = byte (v >> 24 )
36+ b [4 ] = byte (v >> 32 )
37+ b [5 ] = byte (v >> 40 )
38+ b [6 ] = byte (v >> 48 )
39+ b [7 ] = byte (v >> 56 )
3340}
You can’t perform that action at this time.
0 commit comments