rlp: no need to repeat calling len

This commit is contained in:
9547 2024-06-05 19:52:40 +08:00
parent e85e21c932
commit ea0baa1139

View file

@ -30,33 +30,33 @@ var rawValueType = reflect.TypeOf(RawValue{})
// StringSize returns the encoded size of a string.
func StringSize(s string) uint64 {
switch {
case len(s) == 0:
switch n := len(s); n {
case 0:
return 1
case len(s) == 1:
case 1:
if s[0] <= 0x7f {
return 1
} else {
return 2
}
default:
return uint64(headsize(uint64(len(s))) + len(s))
return uint64(headsize(uint64(n)) + n)
}
}
// BytesSize returns the encoded size of a byte slice.
func BytesSize(b []byte) uint64 {
switch {
case len(b) == 0:
switch n := len(b); n {
case 0:
return 1
case len(b) == 1:
case 1:
if b[0] <= 0x7f {
return 1
} else {
return 2
}
default:
return uint64(headsize(uint64(len(b))) + len(b))
return uint64(headsize(uint64(n)) + n)
}
}
@ -105,18 +105,20 @@ func SplitUint64(b []byte) (x uint64, rest []byte, err error) {
if err != nil {
return 0, b, err
}
switch {
case len(content) == 0:
switch n := len(content); n {
case 0:
return 0, rest, nil
case len(content) == 1:
case 1:
if content[0] == 0 {
return 0, b, ErrCanonInt
}
return uint64(content[0]), rest, nil
case len(content) > 8:
return 0, b, errUintOverflow
default:
x, err = readSize(content, byte(len(content)))
if n > 8 {
return 0, b, errUintOverflow
}
x, err = readSize(content, byte(n))
if err != nil {
return 0, b, ErrCanonInt
}