fixed:create nil pointer
This commit is contained in:
parent
bfda75d099
commit
e371ada36e
@ -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()
|
||||||
}
|
}
|
||||||
|
@ -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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user