diff options
| author | 2024-05-06 08:50:47 +0000 | |
|---|---|---|
| committer | 2024-05-06 08:50:47 +0000 | |
| commit | a5f28fe0c923984c263592e82bbce99b0032b794 (patch) | |
| tree | 403544ad5305eb171a85d2b4c59559f83abd87a7 /vendor/github.com/bytedance/sonic/unquote | |
| parent | [chore]: Bump golang.org/x/image from 0.15.0 to 0.16.0 (#2898) (diff) | |
| download | gotosocial-a5f28fe0c923984c263592e82bbce99b0032b794.tar.xz | |
[chore]: Bump github.com/gin-contrib/gzip from 1.0.0 to 1.0.1 (#2899)
Bumps [github.com/gin-contrib/gzip](https://github.com/gin-contrib/gzip) from 1.0.0 to 1.0.1.
- [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.0.0...v1.0.1)
---
updated-dependencies:
- dependency-name: github.com/gin-contrib/gzip
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/unquote')
| -rw-r--r-- | vendor/github.com/bytedance/sonic/unquote/unquote.go | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/vendor/github.com/bytedance/sonic/unquote/unquote.go b/vendor/github.com/bytedance/sonic/unquote/unquote.go index 23fca736e..d81406b2a 100644 --- a/vendor/github.com/bytedance/sonic/unquote/unquote.go +++ b/vendor/github.com/bytedance/sonic/unquote/unquote.go @@ -25,27 +25,45 @@ import ( `github.com/bytedance/sonic/internal/rt` ) +// String unescapes a escaped string (not including `"` at begining and end) +// It validates invalid UTF8 and replace with `\ufffd` func String(s string) (ret string, err types.ParsingError) { mm := make([]byte, 0, len(s)) - err = intoBytesUnsafe(s, &mm) + err = intoBytesUnsafe(s, &mm, true) ret = rt.Mem2Str(mm) return } +// IntoBytes is same with String besides it output result into a buffer m func IntoBytes(s string, m *[]byte) types.ParsingError { if cap(*m) < len(s) { return types.ERR_EOF } else { - return intoBytesUnsafe(s, m) + return intoBytesUnsafe(s, m, true) } } -func intoBytesUnsafe(s string, m *[]byte) types.ParsingError { +// String unescapes a escaped string (not including `"` at begining and end) +// - replace enables replacing invalid utf8 escaped char with `\uffd` +func _String(s string, replace bool) (ret string, err error) { + mm := make([]byte, 0, len(s)) + err = intoBytesUnsafe(s, &mm, replace) + ret = rt.Mem2Str(mm) + return +} + +func intoBytesUnsafe(s string, m *[]byte, replace bool) types.ParsingError { pos := -1 slv := (*rt.GoSlice)(unsafe.Pointer(m)) str := (*rt.GoString)(unsafe.Pointer(&s)) - /* unquote as the default configuration, replace invalid unicode with \ufffd */ - ret := native.Unquote(str.Ptr, str.Len, slv.Ptr, &pos, types.F_UNICODE_REPLACE) + + flags := uint64(0) + if replace { + /* unquote as the default configuration, replace invalid unicode with \ufffd */ + flags |= types.F_UNICODE_REPLACE + } + + ret := native.Unquote(str.Ptr, str.Len, slv.Ptr, &pos, flags) /* check for errors */ if ret < 0 { @@ -57,3 +75,6 @@ func intoBytesUnsafe(s string, m *[]byte) types.ParsingError { runtime.KeepAlive(s) return 0 } + + + |
