fixed:panic when create value from nil struct pointer.

This commit is contained in:
kinggo 2021-10-12 21:04:47 +08:00
parent 9419d5b114
commit c5db44d03f
2 changed files with 4 additions and 6 deletions

View File

@ -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()

View File

@ -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