mirror of
				https://github.com/go-delve/delve.git
				synced 2025-10-31 18:57:18 +08:00 
			
		
		
		
	config: Return handle for created default config (#1130)
Previously the file handle for the newly created default config was being closed and thrown away as opposed to returned to the caller to finish setting up config for the rest of the process. This patch changes to return a handle to the newly created config so setup can happen as normal. This fixes a bug where Delve can crash on first run when a config is not present on the system. Fixes #1129
This commit is contained in:
		 Derek Parker
					Derek Parker
				
			
				
					committed by
					
						 Alessandro Arzilli
						Alessandro Arzilli
					
				
			
			
				
	
			
			
			 Alessandro Arzilli
						Alessandro Arzilli
					
				
			
						parent
						
							279a8a792e
						
					
				
				
					commit
					678576d2ce
				
			| @ -60,9 +60,12 @@ func LoadConfig() *Config { | |||||||
|  |  | ||||||
| 	f, err := os.Open(fullConfigFile) | 	f, err := os.Open(fullConfigFile) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		createDefaultConfig(fullConfigFile) | 		f, err = createDefaultConfig(fullConfigFile) | ||||||
|  | 		if err != nil { | ||||||
|  | 			fmt.Printf("Error creating default config file: %v", err) | ||||||
| 			return nil | 			return nil | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
| 	defer func() { | 	defer func() { | ||||||
| 		err := f.Close() | 		err := f.Close() | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| @ -107,22 +110,16 @@ func SaveConfig(conf *Config) error { | |||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
| func createDefaultConfig(path string) { | func createDefaultConfig(path string) (*os.File, error) { | ||||||
| 	f, err := os.Create(path) | 	f, err := os.Create(path) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Printf("Unable to create config file: %v.", err) | 		return nil, fmt.Errorf("Unable to create config file: %v.", err) | ||||||
| 		return |  | ||||||
| 	} | 	} | ||||||
| 	defer func() { |  | ||||||
| 		err := f.Close() |  | ||||||
| 		if err != nil { |  | ||||||
| 			fmt.Printf("Closing config file failed: %v.", err) |  | ||||||
| 		} |  | ||||||
| 	}() |  | ||||||
| 	err = writeDefaultConfig(f) | 	err = writeDefaultConfig(f) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Printf("Unable to write default configuration: %v.", err) | 		return nil, fmt.Errorf("Unable to write default configuration: %v.", err) | ||||||
| 	} | 	} | ||||||
|  | 	return f, nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func writeDefaultConfig(f *os.File) error { | func writeDefaultConfig(f *os.File) error { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user