forked from mirror/go-json
Merge pull request #361 from orisano/fix/#360
fix: add a fallback uint8 sliceDecoder to bytesDecoder
This commit is contained in:
commit
171d975753
|
@ -12,5 +12,5 @@ jobs:
|
|||
- uses: actions/checkout@v2
|
||||
- uses: golangci/golangci-lint-action@v2
|
||||
with:
|
||||
version: v1.36.0
|
||||
version: v1.45.2
|
||||
args: --timeout=5m
|
||||
|
|
|
@ -48,6 +48,14 @@ linters:
|
|||
- nlreturn
|
||||
- testpackage
|
||||
- wsl
|
||||
- varnamelen
|
||||
- nilnil
|
||||
- ireturn
|
||||
- govet
|
||||
- forcetypeassert
|
||||
- cyclop
|
||||
- containedctx
|
||||
- revive
|
||||
|
||||
issues:
|
||||
exclude-rules:
|
||||
|
|
|
@ -3907,3 +3907,14 @@ func TestIssue342(t *testing.T) {
|
|||
t.Errorf("unexpected result: got(%v) != expected(%v)", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIssue360(t *testing.T) {
|
||||
var uints []uint8
|
||||
err := json.Unmarshal([]byte(`[0, 1, 2]`), &uints)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
if len(uints) != 3 || !(uints[0] == 0 && uints[1] == 1 && uints[2] == 2) {
|
||||
t.Errorf("unexpected result: %v", uints)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,9 +23,8 @@ func byteUnmarshalerSliceDecoder(typ *runtime.Type, structName string, fieldName
|
|||
unmarshalDecoder = newUnmarshalJSONDecoder(runtime.PtrTo(typ), structName, fieldName)
|
||||
case runtime.PtrTo(typ).Implements(unmarshalTextType):
|
||||
unmarshalDecoder = newUnmarshalTextDecoder(runtime.PtrTo(typ), structName, fieldName)
|
||||
}
|
||||
if unmarshalDecoder == nil {
|
||||
return nil
|
||||
default:
|
||||
unmarshalDecoder, _ = compileUint8(typ, structName, fieldName)
|
||||
}
|
||||
return newSliceDecoder(unmarshalDecoder, typ, 1, structName, fieldName)
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
//go:build !race
|
||||
// +build !race
|
||||
|
||||
package decoder
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
//go:build race
|
||||
// +build race
|
||||
|
||||
package decoder
|
||||
|
|
Loading…
Reference in New Issue