From: qiulaidongfeng <2645477756@qq.com> Date: Sat, 4 May 2024 01:42:30 +0000 (+0000) Subject: unique: use stringslite.Clone X-Git-Tag: go1.23rc1~466 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4dccb7858289ec7702d18f6a8307d677ad492cc8;p=gostls13.git unique: use stringslite.Clone Change-Id: Icb1ba7df1f0414090632e663b6a92b492546070d GitHub-Last-Rev: 5169d2681311d2631d9119aea17114602efcaa24 GitHub-Pull-Request: golang/go#67092 Reviewed-on: https://go-review.googlesource.com/c/go/+/581940 Reviewed-by: Keith Randall Auto-Submit: Keith Randall LUCI-TryBot-Result: Go LUCI Auto-Submit: Ian Lance Taylor Reviewed-by: Ian Lance Taylor Commit-Queue: Ian Lance Taylor Reviewed-by: Keith Randall --- diff --git a/src/unique/clone.go b/src/unique/clone.go index b30d44e393..36ced14ece 100644 --- a/src/unique/clone.go +++ b/src/unique/clone.go @@ -6,6 +6,7 @@ package unique import ( "internal/abi" + "internal/stringslite" "unsafe" ) @@ -20,7 +21,7 @@ import ( func clone[T comparable](value T, seq *cloneSeq) T { for _, offset := range seq.stringOffsets { ps := (*string)(unsafe.Pointer(uintptr(unsafe.Pointer(&value)) + offset)) - *ps = cloneString(*ps) + *ps = stringslite.Clone(*ps) } return value } @@ -86,15 +87,3 @@ func buildArrayCloneSeq(typ *abi.Type, seq *cloneSeq, baseOffset uintptr) { offset = (offset + align - 1) &^ (align - 1) } } - -// cloneString is a copy of strings.Clone, because we can't depend on the strings -// package here. Several packages that might make use of unique, like net, explicitly -// forbid depending on unicode, which strings depends on. -func cloneString(s string) string { - if len(s) == 0 { - return "" - } - b := make([]byte, len(s)) - copy(b, s) - return unsafe.String(&b[0], len(b)) -}