@@ -480,15 +480,16 @@ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) {
480
480
481
481
si := 0
482
482
for strconv .IntSize >= 64 && len (src )- si >= 8 && len (dst )- n >= 8 {
483
+ src2 := src [si : si + 8 ]
483
484
if dn , ok := assemble64 (
484
- enc .decodeMap [src [ si + 0 ]],
485
- enc .decodeMap [src [ si + 1 ]],
486
- enc .decodeMap [src [ si + 2 ]],
487
- enc .decodeMap [src [ si + 3 ]],
488
- enc .decodeMap [src [ si + 4 ]],
489
- enc .decodeMap [src [ si + 5 ]],
490
- enc .decodeMap [src [ si + 6 ]],
491
- enc .decodeMap [src [ si + 7 ]],
485
+ enc .decodeMap [src2 [ 0 ]],
486
+ enc .decodeMap [src2 [ 1 ]],
487
+ enc .decodeMap [src2 [ 2 ]],
488
+ enc .decodeMap [src2 [ 3 ]],
489
+ enc .decodeMap [src2 [ 4 ]],
490
+ enc .decodeMap [src2 [ 5 ]],
491
+ enc .decodeMap [src2 [ 6 ]],
492
+ enc .decodeMap [src2 [ 7 ]],
492
493
); ok {
493
494
binary .BigEndian .PutUint64 (dst [n :], dn )
494
495
n += 6
@@ -504,11 +505,12 @@ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) {
504
505
}
505
506
506
507
for len (src )- si >= 4 && len (dst )- n >= 4 {
508
+ src2 := src [si : si + 4 ]
507
509
if dn , ok := assemble32 (
508
- enc .decodeMap [src [ si + 0 ]],
509
- enc .decodeMap [src [ si + 1 ]],
510
- enc .decodeMap [src [ si + 2 ]],
511
- enc .decodeMap [src [ si + 3 ]],
510
+ enc .decodeMap [src2 [ 0 ]],
511
+ enc .decodeMap [src2 [ 1 ]],
512
+ enc .decodeMap [src2 [ 2 ]],
513
+ enc .decodeMap [src2 [ 3 ]],
512
514
); ok {
513
515
binary .BigEndian .PutUint32 (dst [n :], dn )
514
516
n += 3
0 commit comments