forked from mirror/go-json
funcDecoder: handle cases of value being true or false
This commit is contained in:
parent
a7d041a3d4
commit
5f0b34250c
|
@ -53,9 +53,26 @@ func (d *funcDecoder) DecodeStream(s *Stream, depth int64, p unsafe.Pointer) err
|
||||||
Offset: s.totalOffset(),
|
Offset: s.totalOffset(),
|
||||||
}
|
}
|
||||||
case 'n':
|
case 'n':
|
||||||
if bytes.Equal(src, nullbytes) {
|
if err := nullBytes(s); err != nil {
|
||||||
*(*unsafe.Pointer)(p) = nil
|
return err
|
||||||
return nil
|
}
|
||||||
|
*(*unsafe.Pointer)(p) = nil
|
||||||
|
return nil
|
||||||
|
case 't':
|
||||||
|
if err := trueBytes(s); err == nil {
|
||||||
|
return &errors.UnmarshalTypeError{
|
||||||
|
Value: "boolean",
|
||||||
|
Type: runtime.RType2Type(d.typ),
|
||||||
|
Offset: s.totalOffset(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 'f':
|
||||||
|
if err := falseBytes(s); err == nil {
|
||||||
|
return &errors.UnmarshalTypeError{
|
||||||
|
Value: "boolean",
|
||||||
|
Type: runtime.RType2Type(d.typ),
|
||||||
|
Offset: s.totalOffset(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,6 +119,22 @@ func (d *funcDecoder) Decode(ctx *RuntimeContext, cursor, depth int64, p unsafe.
|
||||||
*(*unsafe.Pointer)(p) = nil
|
*(*unsafe.Pointer)(p) = nil
|
||||||
return end, nil
|
return end, nil
|
||||||
}
|
}
|
||||||
|
case 't':
|
||||||
|
if err := validateTrue(buf, start); err == nil {
|
||||||
|
return 0, &errors.UnmarshalTypeError{
|
||||||
|
Value: "boolean",
|
||||||
|
Type: runtime.RType2Type(d.typ),
|
||||||
|
Offset: start,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 'f':
|
||||||
|
if err := validateFalse(buf, start); err == nil {
|
||||||
|
return 0, &errors.UnmarshalTypeError{
|
||||||
|
Value: "boolean",
|
||||||
|
Type: runtime.RType2Type(d.typ),
|
||||||
|
Offset: start,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0, errors.ErrNotAtBeginningOfValue(start)
|
return 0, errors.ErrNotAtBeginningOfValue(start)
|
||||||
|
|
Loading…
Reference in New Issue