cmd/cloner,*: revert: optimize nillable slice cloner

This reverts commit ee90cd02fd.

The outcome is not identical for empty slices. Cloner really needs
tests!

Updates #9601

Signed-off-by: James Tucker <james@tailscale.com>
This commit is contained in:
James Tucker
2023-09-29 18:15:53 -07:00
committed by James Tucker
parent ee90cd02fd
commit 324f0d5f80
5 changed files with 58 additions and 34 deletions
+5 -3
View File
@@ -23,9 +23,11 @@ func (src *Match) Clone() *Match {
dst.IPProto = append(src.IPProto[:0:0], src.IPProto...)
dst.Srcs = append(src.Srcs[:0:0], src.Srcs...)
dst.Dsts = append(src.Dsts[:0:0], src.Dsts...)
dst.Caps = append([]CapMatch(nil), make([]CapMatch, len(src.Caps))...)
for i := range dst.Caps {
dst.Caps[i] = *src.Caps[i].Clone()
if src.Caps != nil {
dst.Caps = make([]CapMatch, len(src.Caps))
for i := range dst.Caps {
dst.Caps[i] = *src.Caps[i].Clone()
}
}
return dst
}
+5 -3
View File
@@ -24,9 +24,11 @@ func (src *Config) Clone() *Config {
*dst = *src
dst.Addresses = append(src.Addresses[:0:0], src.Addresses...)
dst.DNS = append(src.DNS[:0:0], src.DNS...)
dst.Peers = append([]Peer(nil), make([]Peer, len(src.Peers))...)
for i := range dst.Peers {
dst.Peers[i] = *src.Peers[i].Clone()
if src.Peers != nil {
dst.Peers = make([]Peer, len(src.Peers))
for i := range dst.Peers {
dst.Peers[i] = *src.Peers[i].Clone()
}
}
return dst
}