diff options
| author | 2025-04-14 09:43:56 +0200 | |
|---|---|---|
| committer | 2025-04-14 09:43:56 +0200 | |
| commit | 51b9ef5c346f333e558eca38fd954464322f3b7d (patch) | |
| tree | bf5cd0de887a27c1afc66345b1a464921d96e503 /vendor/github.com/bytedance/sonic/internal/decoder/optdec/slice.go | |
| parent | [docs] Remind the user that password resets don't work without restarting. (#... (diff) | |
| download | gotosocial-51b9ef5c346f333e558eca38fd954464322f3b7d.tar.xz | |
[chore]: Bump github.com/gin-contrib/gzip from 1.2.2 to 1.2.3 (#4000)
Bumps [github.com/gin-contrib/gzip](https://github.com/gin-contrib/gzip) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/gin-contrib/gzip/releases)
- [Changelog](https://github.com/gin-contrib/gzip/blob/master/.goreleaser.yaml)
- [Commits](https://github.com/gin-contrib/gzip/compare/v1.2.2...v1.2.3)
---
updated-dependencies:
- dependency-name: github.com/gin-contrib/gzip
dependency-version: 1.2.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal/decoder/optdec/slice.go')
| -rw-r--r-- | vendor/github.com/bytedance/sonic/internal/decoder/optdec/slice.go | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/slice.go b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/slice.go index a94e422b3..da7b12fc5 100644 --- a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/slice.go +++ b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/slice.go @@ -80,9 +80,13 @@ func (d *arrayDecoder) FromDom(vp unsafe.Pointer, node Node, ctx *context) error } /* zero rest of array */ - ptr := unsafe.Pointer(uintptr(vp) + uintptr(i)*d.elemType.Size) + addr := uintptr(vp) + uintptr(i)*d.elemType.Size n := uintptr(d.len-i) * d.elemType.Size - rt.ClearMemory(d.elemType, ptr, n) + + /* the boundary pointer may points to another unknown object, so we need to avoid using it */ + if n != 0 { + rt.ClearMemory(d.elemType, unsafe.Pointer(addr), n) + } return gerr } @@ -95,7 +99,18 @@ func (d *sliceEfaceDecoder) FromDom(vp unsafe.Pointer, node Node, ctx *context) return nil } - return node.AsSliceEface(ctx, vp) + /* if slice is empty, just call `AsSliceEface` */ + if ((*rt.GoSlice)(vp)).Len == 0 { + return node.AsSliceEface(ctx, vp) + } + + decoder := sliceDecoder{ + elemType: rt.AnyType, + elemDec: &efaceDecoder{}, + typ: rt.SliceEfaceType.Pack(), + } + + return decoder.FromDom(vp, node, ctx) } type sliceI32Decoder struct { @@ -168,12 +183,8 @@ func (d *sliceBytesDecoder) FromDom(vp unsafe.Pointer, node Node, ctx *context) } s, err := node.AsSliceBytes(ctx) - if err != nil { - return err - } - *(*[]byte)(vp) = s - return nil + return err } type sliceBytesUnmarshalerDecoder struct { |
