Skip to content

Commit 5529aa7

Browse files
committed
fix: expose extensions clone method
1 parent 70a0c81 commit 5529aa7

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

auth/extensions.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,25 @@ func (exts Extensions) Has(key string) bool {
5151
_, ok := exts[key]
5252
return ok
5353
}
54+
55+
// Clone returns a copy of extensions or nil if extensions is nil.
56+
func (exts Extensions) Clone() Extensions {
57+
if exts == nil {
58+
return nil
59+
}
60+
61+
// Find total number of values.
62+
nv := 0
63+
for _, v := range exts {
64+
nv += len(v)
65+
}
66+
sv := make([]string, nv) // shared backing array for extensions values
67+
cloned := make(Extensions, len(exts))
68+
for k, v := range exts {
69+
n := copy(sv, v)
70+
cloned[k] = sv[:n:n]
71+
sv = sv[n:]
72+
}
73+
return exts
74+
75+
}

0 commit comments

Comments
 (0)