mirror of
https://github.com/helm/helm.git
synced 2026-02-03 20:39:45 -05:00
Merge pull request #31751 from gitgrave/fix-31750
Some checks are pending
build-test / build (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
golangci-lint / golangci-lint (push) Waiting to run
release / release (push) Waiting to run
release / canary-release (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Some checks are pending
build-test / build (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
golangci-lint / golangci-lint (push) Waiting to run
release / release (push) Waiting to run
release / canary-release (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
fix(copystructure): handle nil elements in slice copying
This commit is contained in:
commit
75880fa498
2 changed files with 24 additions and 1 deletions
|
|
@ -89,7 +89,15 @@ func copyValue(original reflect.Value) (any, error) {
|
|||
}
|
||||
copied := reflect.MakeSlice(original.Type(), original.Len(), original.Cap())
|
||||
for i := 0; i < original.Len(); i++ {
|
||||
val, err := copyValue(original.Index(i))
|
||||
elem := original.Index(i)
|
||||
|
||||
// Handle nil values in slices (e.g., interface{} elements that are nil)
|
||||
if elem.Kind() == reflect.Interface && elem.IsNil() {
|
||||
copied.Index(i).Set(elem)
|
||||
continue
|
||||
}
|
||||
|
||||
val, err := copyValue(elem)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,6 +113,21 @@ func TestCopy_Slice(t *testing.T) {
|
|||
input[0]["key1"] = "modified"
|
||||
assert.Equal(t, "value1", resultSlice[0]["key1"])
|
||||
})
|
||||
|
||||
t.Run("slice with nil elements", func(t *testing.T) {
|
||||
input := []any{
|
||||
"value1",
|
||||
nil,
|
||||
"value2",
|
||||
}
|
||||
result, err := Copy(input)
|
||||
require.NoError(t, err)
|
||||
|
||||
resultSlice, ok := result.([]any)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, input, resultSlice)
|
||||
assert.Nil(t, resultSlice[1])
|
||||
})
|
||||
}
|
||||
|
||||
func TestCopy_Map(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue