From 7d466625d666b8ef8b346772a0a30383a3aea489 Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 16 Jan 2026 10:09:47 +0800 Subject: [PATCH] fix(serialization): nil and pointer handling in ConvertSlice --- internal/serialization/serialization.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/serialization/serialization.go b/internal/serialization/serialization.go index dc887718..bd16526e 100644 --- a/internal/serialization/serialization.go +++ b/internal/serialization/serialization.go @@ -456,6 +456,18 @@ func Convert(src reflect.Value, dst reflect.Value, checkValidateTag bool) gperr. } func ConvertSlice(src reflect.Value, dst reflect.Value, checkValidateTag bool) gperr.Error { + if dst.Kind() == reflect.Pointer { + if dst.IsNil() && !dst.CanSet() { + return ErrNilValue + } + initPtr(dst) + dst = dst.Elem() + } + + if !dst.CanSet() { + return ErrUnsettable.Subject(dst.Type().String()) + } + if src.Kind() != reflect.Slice { return Convert(src, dst, checkValidateTag) }