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)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	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 {
 | 
			
		||||
		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())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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