Bump reva
This commit is contained in:
+16
-3
@@ -24,21 +24,24 @@ func (d *decoder) asBinWithCode(code byte, k reflect.Kind) ([]byte, error) {
|
||||
if err != nil {
|
||||
return emptyBytes, err
|
||||
}
|
||||
return d.readSizeN(int(l))
|
||||
// avoid common buffer reference
|
||||
return d.copySizeN(int(l))
|
||||
|
||||
case def.Bin16:
|
||||
bs, err := d.readSize2()
|
||||
if err != nil {
|
||||
return emptyBytes, err
|
||||
}
|
||||
return d.readSizeN(int(binary.BigEndian.Uint16(bs)))
|
||||
// avoid common buffer reference
|
||||
return d.copySizeN(int(binary.BigEndian.Uint16(bs)))
|
||||
|
||||
case def.Bin32:
|
||||
bs, err := d.readSize4()
|
||||
if err != nil {
|
||||
return emptyBytes, err
|
||||
}
|
||||
return d.readSizeN(int(binary.BigEndian.Uint32(bs)))
|
||||
// avoid common buffer reference
|
||||
return d.copySizeN(int(binary.BigEndian.Uint32(bs)))
|
||||
}
|
||||
|
||||
return emptyBytes, d.errorTemplate(code, k)
|
||||
@@ -48,3 +51,13 @@ func (d *decoder) asBinStringWithCode(code byte, k reflect.Kind) (string, error)
|
||||
bs, err := d.asBinWithCode(code, k)
|
||||
return *(*string)(unsafe.Pointer(&bs)), err
|
||||
}
|
||||
|
||||
func (d *decoder) copySizeN(n int) ([]byte, error) {
|
||||
bs, err := d.readSizeN(n)
|
||||
if err != nil {
|
||||
return emptyBytes, err
|
||||
}
|
||||
v := make([]byte, n)
|
||||
copy(v, bs)
|
||||
return v, nil
|
||||
}
|
||||
|
||||
+3
-2
@@ -83,6 +83,7 @@ func (d *decoder) asStringByteByLength(l int, _ reflect.Kind) ([]byte, error) {
|
||||
if l < 1 {
|
||||
return emptyBytes, nil
|
||||
}
|
||||
|
||||
return d.readSizeN(l)
|
||||
|
||||
// avoid common buffer reference
|
||||
return d.copySizeN(l)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user