fixed:create nil pointer

This commit is contained in:
kinggo 2021-10-12 20:34:41 +08:00
parent bfda75d099
commit e371ada36e
2 changed files with 17 additions and 1 deletions

View File

@ -77,7 +77,14 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error)
return nil, fmt.Errorf("%w: %+v", ErrUnsupportedDataType, dest) return nil, fmt.Errorf("%w: %+v", ErrUnsupportedDataType, dest)
} }
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type() value := reflect.ValueOf(dest)
var modelType reflect.Type
if value.IsZero() {
modelType = value.Type()
} else {
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

@ -517,3 +517,12 @@ func TestCreateFromSubQuery(t *testing.T) {
t.Errorf("invalid insert SQL, got %v", result.Statement.SQL.String()) t.Errorf("invalid insert SQL, got %v", result.Statement.SQL.String())
} }
} }
func TestNilPointer(t *testing.T) {
var user *User
err := DB.Create(user).Error
if err == nil || err != gorm.ErrInvalidValue {
t.Fatalf("it is not ErrInvalidValue")
}
}