Merge pull request #361 from orisano/fix/#360

fix: add a fallback uint8 sliceDecoder to bytesDecoder
This commit is contained in:
Masaaki Goshima 2022-04-13 00:41:29 +09:00 committed by GitHub
commit 171d975753
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 4 deletions

View File

@ -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

View File

@ -48,6 +48,14 @@ linters:
- nlreturn
- testpackage
- wsl
- varnamelen
- nilnil
- ireturn
- govet
- forcetypeassert
- cyclop
- containedctx
- revive
issues:
exclude-rules:

View File

@ -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)
}
}

View File

@ -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)
}

View File

@ -1,3 +1,4 @@
//go:build !race
// +build !race
package decoder

View File

@ -1,3 +1,4 @@
//go:build race
// +build race
package decoder