common/collections: Always make a copy of the input slice in Append

Fixes #10458.
This commit is contained in:
Bjørn Erik Pedersen
2023-06-14 09:44:18 +02:00
parent d178fe94fe
commit f73c567534
2 changed files with 19 additions and 0 deletions

View File

@@ -31,6 +31,13 @@ func Append(to any, from ...any) (any, error) {
var tot reflect.Type
if !toIsNil {
if tov.Kind() == reflect.Slice {
// Create a copy of tov, so we don't modify the original.
c := reflect.MakeSlice(tov.Type(), tov.Len(), tov.Len()+len(from))
reflect.Copy(c, tov)
tov = c
}
if tov.Kind() != reflect.Slice {
return nil, fmt.Errorf("expected a slice, got %T", to)
}