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: actions/checkout@v2
|
||||||
- uses: golangci/golangci-lint-action@v2
|
- uses: golangci/golangci-lint-action@v2
|
||||||
with:
|
with:
|
||||||
version: v1.36.0
|
version: v1.45.2
|
||||||
args: --timeout=5m
|
args: --timeout=5m
|
||||||
|
|
|
@ -48,6 +48,14 @@ linters:
|
||||||
- nlreturn
|
- nlreturn
|
||||||
- testpackage
|
- testpackage
|
||||||
- wsl
|
- wsl
|
||||||
|
- varnamelen
|
||||||
|
- nilnil
|
||||||
|
- ireturn
|
||||||
|
- govet
|
||||||
|
- forcetypeassert
|
||||||
|
- cyclop
|
||||||
|
- containedctx
|
||||||
|
- revive
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
exclude-rules:
|
exclude-rules:
|
||||||
|
|
|
@ -3907,3 +3907,14 @@ func TestIssue342(t *testing.T) {
|
||||||
t.Errorf("unexpected result: got(%v) != expected(%v)", got, expected)
|
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)
|
unmarshalDecoder = newUnmarshalJSONDecoder(runtime.PtrTo(typ), structName, fieldName)
|
||||||
case runtime.PtrTo(typ).Implements(unmarshalTextType):
|
case runtime.PtrTo(typ).Implements(unmarshalTextType):
|
||||||
unmarshalDecoder = newUnmarshalTextDecoder(runtime.PtrTo(typ), structName, fieldName)
|
unmarshalDecoder = newUnmarshalTextDecoder(runtime.PtrTo(typ), structName, fieldName)
|
||||||
}
|
default:
|
||||||
if unmarshalDecoder == nil {
|
unmarshalDecoder, _ = compileUint8(typ, structName, fieldName)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
return newSliceDecoder(unmarshalDecoder, typ, 1, structName, fieldName)
|
return newSliceDecoder(unmarshalDecoder, typ, 1, structName, fieldName)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
//go:build !race
|
||||||
// +build !race
|
// +build !race
|
||||||
|
|
||||||
package decoder
|
package decoder
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
//go:build race
|
||||||
// +build race
|
// +build race
|
||||||
|
|
||||||
package decoder
|
package decoder
|
||||||
|
|
Loading…
Reference in New Issue