in serde-generate/runtime/golang/bcs/deserializer.go [67:88]
func (d *deserializer) deserializeUleb128AsU32() (uint32, error) {
var value uint64
for shift := 0; shift < 32; shift += 7 {
byte, err := d.Buffer.ReadByte()
if err != nil {
return 0, err
}
digit := byte & 0x7F
value = value | (uint64(digit) << shift)
if value > maxUint32 {
return 0, errors.New("overflow while parsing uleb128-encoded uint32 value")
}
if digit == byte {
if shift > 0 && digit == 0 {
return 0, errors.New("invalid uleb128 number (unexpected zero digit)")
}
return uint32(value), nil
}
}
return 0, errors.New("overflow while parsing uleb128-encoded uint32 value")
}