@@ -480,15 +480,16 @@ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) {
480480
481481 si := 0
482482 for strconv .IntSize >= 64 && len (src )- si >= 8 && len (dst )- n >= 8 {
483+ src2 := src [si : si + 8 ]
483484 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 ]],
492493 ); ok {
493494 binary .BigEndian .PutUint64 (dst [n :], dn )
494495 n += 6
@@ -504,11 +505,12 @@ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) {
504505 }
505506
506507 for len (src )- si >= 4 && len (dst )- n >= 4 {
508+ src2 := src [si : si + 4 ]
507509 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 ]],
512514 ); ok {
513515 binary .BigEndian .PutUint32 (dst [n :], dn )
514516 n += 3
0 commit comments