From f88e8b072c6e9dc5ecb0530823ee957f9cff5f6f Mon Sep 17 00:00:00 2001 From: Jinzhu Date: Thu, 20 Aug 2020 18:13:29 +0800 Subject: [PATCH] Check valid pointer before use it as Valuer --- schema/field.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/schema/field.go b/schema/field.go index de937132..497aa02d 100644 --- a/schema/field.go +++ b/schema/field.go @@ -473,16 +473,16 @@ func (field *Field) setupValuerAndSetter() { } } - if valuer, ok := v.(driver.Valuer); ok { - if v, err = valuer.Value(); err == nil { - err = setter(value, v) - } - } else if reflectV.Kind() == reflect.Ptr { + if reflectV.Kind() == reflect.Ptr { if reflectV.IsNil() { field.ReflectValueOf(value).Set(reflect.New(field.FieldType).Elem()) } else { err = setter(value, reflectV.Elem().Interface()) } + } else if valuer, ok := v.(driver.Valuer); ok { + if v, err = valuer.Value(); err == nil { + err = setter(value, v) + } } else { return fmt.Errorf("failed to set value %+v to field %v", v, field.Name) }