Fix SetMarshalData for PutSingle request #65
2 changed files with 7 additions and 6 deletions
|
@ -1111,17 +1111,13 @@ func (r *PutSingleRequestBody) StableMarshal(buf []byte) []byte {
|
|||
|
||||
// SetMarshalData sets marshal data to reduce memory allocations.
|
||||
//
|
||||
// It is unsafe to modify request data after setting marshal data.
|
||||
// It is unsafe to modify/copy request data after setting marshal data.
|
||||
func (r *PutSingleRequestBody) SetMarshalData(data []byte) {
|
||||
if r == nil {
|
||||
return
|
||||
}
|
||||
|
||||
if data == nil {
|
||||
r.marshalData = r.StableMarshal(nil)
|
||||
} else {
|
||||
r.marshalData = data
|
||||
}
|
||||
r.marshalData = data
|
||||
|
||||
proto.NestedStructureSetMarshalData(putSingleReqObjectField, r.marshalData, r.object)
|
||||
}
|
||||
|
|
|
@ -287,6 +287,11 @@ func NestedStructureSetMarshalData[T any, M setMarshalData[T]](field int64, pare
|
|||
return 0
|
||||
}
|
||||
|
||||
if parentData == nil {
|
||||
|
||||
v.SetMarshalData(nil)
|
||||
return 0
|
||||
}
|
||||
|
||||
n := v.StableSize()
|
||||
buf := make([]byte, binary.MaxVarintLen64)
|
||||
prefix := protowire.EncodeTag(protowire.Number(field), protowire.BytesType)
|
||||
|
|
Loading…
Reference in a new issue
How is this related?
Now
r.marshalData
can benil
So if
parentData == nil
then we should reset nested marshalData