fixed:panic when create value from nil struct pointer.
This commit is contained in:
parent
9419d5b114
commit
c5db44d03f
@ -78,12 +78,10 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
value := reflect.ValueOf(dest)
|
value := reflect.ValueOf(dest)
|
||||||
var modelType reflect.Type
|
if value.Kind() == reflect.Ptr && value.IsNil() {
|
||||||
if value.IsZero() {
|
value = reflect.New(value.Type().Elem())
|
||||||
modelType = value.Type()
|
|
||||||
} else {
|
|
||||||
modelType = reflect.Indirect(value).Type()
|
|
||||||
}
|
}
|
||||||
|
modelType := reflect.Indirect(value).Type()
|
||||||
|
|
||||||
if modelType.Kind() == reflect.Interface {
|
if modelType.Kind() == reflect.Interface {
|
||||||
modelType = reflect.Indirect(reflect.ValueOf(dest)).Elem().Type()
|
modelType = reflect.Indirect(reflect.ValueOf(dest)).Elem().Type()
|
||||||
|
@ -518,7 +518,7 @@ func TestCreateFromSubQuery(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNilPointer(t *testing.T) {
|
func TestCreateNilPointer(t *testing.T) {
|
||||||
var user *User
|
var user *User
|
||||||
|
|
||||||
err := DB.Create(user).Error
|
err := DB.Create(user).Error
|
||||||
|
Loading…
x
Reference in New Issue
Block a user