@@ -99,9 +99,9 @@ func (d *decoder) sizeFromCtrlByte(ctrlByte byte, offset uint, typeNum dataType)
9999
100100 switch {
101101 case size == 30 :
102- size = 285 + uint ( uintFromBytes (0 , sizeBytes ) )
102+ size = 285 + uintFromBytes (0 , sizeBytes )
103103 case size > 30 :
104- size = uint ( uintFromBytes (0 , sizeBytes ) ) + 65821
104+ size = uintFromBytes (0 , sizeBytes ) + 65821
105105 }
106106 return size , newOffset , nil
107107}
@@ -507,13 +507,13 @@ func (d *decoder) decodePointer(
507507 return 0 , 0 , newOffsetError ()
508508 }
509509 pointerBytes := d .buffer [offset :newOffset ]
510- var prefix uint64
510+ var prefix uint
511511 if pointerSize == 4 {
512512 prefix = 0
513513 } else {
514- prefix = uint64 (size & 0x7 )
514+ prefix = uint (size & 0x7 )
515515 }
516- unpacked := uint ( uintFromBytes (prefix , pointerBytes ) )
516+ unpacked := uintFromBytes (prefix , pointerBytes )
517517
518518 var pointerValueOffset uint
519519 switch pointerSize {
@@ -640,8 +640,12 @@ func (d *decoder) decodeStruct(
640640
641641func (d * decoder ) decodeUint (size uint , offset uint ) (uint64 , uint , error ) {
642642 newOffset := offset + size
643- val := uintFromBytes ( 0 , d .buffer [offset :newOffset ])
643+ bytes := d .buffer [offset :newOffset ]
644644
645+ var val uint64
646+ for _ , b := range bytes {
647+ val = (val << 8 ) | uint64 (b )
648+ }
645649 return val , newOffset , nil
646650}
647651
@@ -653,10 +657,10 @@ func (d *decoder) decodeUint128(size uint, offset uint) (*big.Int, uint, error)
653657 return val , newOffset , nil
654658}
655659
656- func uintFromBytes (prefix uint64 , uintBytes []byte ) uint64 {
660+ func uintFromBytes (prefix uint , uintBytes []byte ) uint {
657661 val := prefix
658662 for _ , b := range uintBytes {
659- val = (val << 8 ) | uint64 (b )
663+ val = (val << 8 ) | uint (b )
660664 }
661665 return val
662666}
0 commit comments