aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorqiulaidongfeng <2645477756@qq.com>2024-05-04 01:42:30 +0000
committerGopher Robot <gobot@golang.org>2024-05-05 00:24:21 +0000
commit4dccb7858289ec7702d18f6a8307d677ad492cc8 (patch)
tree57883e4a404f4d4737003a104f96d076a14b8175 /src
parent20130cc36a17ba131b80cc8674f1ef8d002e9dbe (diff)
downloadgo-4dccb7858289ec7702d18f6a8307d677ad492cc8.tar.gz
go-4dccb7858289ec7702d18f6a8307d677ad492cc8.zip
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 <khr@golang.org> Auto-Submit: Keith Randall <khr@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Commit-Queue: Ian Lance Taylor <iant@google.com> Reviewed-by: Keith Randall <khr@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/unique/clone.go15
1 files changed, 2 insertions, 13 deletions
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))
-}