Skip to content

Commit 2f0c4c4

Browse files
doc: clarify crud error process decoding
It is a bit confusing for non-experienced vmihailenco/msgpack users than `nil` values are actually parsed by `DecodeMapLen`, `DecodeUint64` and `DecodeBool` methods to some default value. So I decided to leave a note here.
1 parent 7b20a80 commit 2f0c4c4

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

crud/result.go

+9
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ func (r *Result) DecodeMsgpack(d *msgpack.Decoder) error {
8181
return fmt.Errorf("array len doesn't match: %d", arrLen)
8282
}
8383

84+
// DecodeMapLen processes `nil` as zero length map,
85+
// so in `return nil, err` case we don't miss error info.
86+
// https://github.com/vmihailenco/msgpack/blob/3f7bd806fea698e7a9fe80979aa3512dea0a7368/decode_map.go#L79-L81
8487
l, err := d.DecodeMapLen()
8588
if err != nil {
8689
return err
@@ -181,6 +184,9 @@ func (r *NumberResult) DecodeMsgpack(d *msgpack.Decoder) error {
181184
return fmt.Errorf("array len doesn't match: %d", arrLen)
182185
}
183186

187+
// DecodeUint64 processes `nil` as `0`,
188+
// so in `return nil, err` case we don't miss error info.
189+
// https://github.com/vmihailenco/msgpack/blob/3f7bd806fea698e7a9fe80979aa3512dea0a7368/decode_number.go#L91-L93
184190
if r.Value, err = d.DecodeUint64(); err != nil {
185191
return err
186192
}
@@ -218,6 +224,9 @@ func (r *BoolResult) DecodeMsgpack(d *msgpack.Decoder) error {
218224
return err
219225
}
220226
if arrLen < 2 {
227+
// DecodeBool processes `nil` as `false`,
228+
// so in `return nil, err` case we don't miss error info.
229+
// https://github.com/vmihailenco/msgpack/blob/3f7bd806fea698e7a9fe80979aa3512dea0a7368/decode.go#L367-L369
221230
if r.Value, err = d.DecodeBool(); err != nil {
222231
return err
223232
}

0 commit comments

Comments
 (0)