From aba17ce1a196fc9085ddbf0c1ab38873c180d876 Mon Sep 17 00:00:00 2001 From: Masudur Rahman Date: Wed, 12 Jul 2023 15:55:19 +0600 Subject: [PATCH] Set Elem() value if data is of pointer type (#536) Signed-off-by: Masudur Rahman --- client/client.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/client/client.go b/client/client.go index 535ae017e..79a8e2e12 100644 --- a/client/client.go +++ b/client/client.go @@ -90,7 +90,8 @@ func CreateOrPatch(ctx context.Context, c client.Client, obj client.Object, tran if err != nil { return kutil.VerbUnchanged, err } - reflect.ValueOf(obj).Elem().Set(reflect.ValueOf(mod)) + + setValue(mod, obj) return kutil.VerbCreated, err } else if err != nil { return kutil.VerbUnchanged, err @@ -114,10 +115,19 @@ func CreateOrPatch(ctx context.Context, c client.Client, obj client.Object, tran if err != nil { return kutil.VerbUnchanged, err } - reflect.ValueOf(obj).Elem().Set(reflect.ValueOf(mod)) + + setValue(mod, obj) return kutil.VerbPatched, nil } +func setValue(src, target any) { + srcValue := reflect.ValueOf(src) + if srcValue.Kind() == reflect.Pointer { + srcValue = srcValue.Elem() + } + reflect.ValueOf(target).Elem().Set(srcValue) +} + func PatchStatus(ctx context.Context, c client.Client, obj client.Object, transform TransformStatusFunc, opts ...client.PatchOption) (client.Object, kutil.VerbType, error) { key := types.NamespacedName{ Namespace: obj.GetNamespace(),