Skip to content

Commit f95183a

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 d951bd0 commit f95183a

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
@@ -79,6 +79,9 @@ func (r *Result) DecodeMsgpack(d *msgpack.Decoder) error {
7979
return fmt.Errorf("array len doesn't match: %d", arrLen)
8080
}
8181

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

190+
// DecodeUint64 processes `nil` as `0`,
191+
// so in `return nil, err` case we don't miss error info.
192+
// https://github.com/vmihailenco/msgpack/blob/3f7bd806fea698e7a9fe80979aa3512dea0a7368/decode_number.go#L91-L93
187193
if r.Value, err = d.DecodeUint64(); err != nil {
188194
return err
189195
}
@@ -221,6 +227,9 @@ func (r *BoolResult) DecodeMsgpack(d *msgpack.Decoder) error {
221227
return err
222228
}
223229

230+
// DecodeBool processes `nil` as `false`,
231+
// so in `return nil, err` case we don't miss error info.
232+
// https://github.com/vmihailenco/msgpack/blob/3f7bd806fea698e7a9fe80979aa3512dea0a7368/decode.go#L367-L369
224233
if r.Value, err = d.DecodeBool(); err != nil {
225234
return err
226235
}

0 commit comments

Comments
 (0)