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 4
4
5
5
package flate
6
6
7
- import (
8
- "internal/byteorder"
9
- )
10
-
11
7
type indexer interface {
12
8
int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64
13
9
}
@@ -19,15 +15,26 @@ func loadLE8[I indexer](b []byte, i I) byte {
19
15
20
16
// loadLE32 will load from b at index i.
21
17
func 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
23
20
}
24
21
25
22
// loadLE64 will load from b at index i.
26
23
func 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
28
27
}
29
28
30
29
// storeLE64 will store v at start of b.
31
30
func 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 )
33
40
}
You can’t perform that action at this time.
0 commit comments