summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/unquote
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2024-05-06 08:50:47 +0000
committerLibravatar GitHub <noreply@github.com>2024-05-06 08:50:47 +0000
commita5f28fe0c923984c263592e82bbce99b0032b794 (patch)
tree403544ad5305eb171a85d2b4c59559f83abd87a7 /vendor/github.com/bytedance/sonic/unquote
parent[chore]: Bump golang.org/x/image from 0.15.0 to 0.16.0 (#2898) (diff)
downloadgotosocial-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.go31
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
}
+
+
+