mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	Issue #4625: If IDLE cannot write to its recent file or breakpoint
files, display a message popup and continue rather than crash. (original patch by Roger Serwy)
This commit is contained in:
		
							parent
							
								
									83ef2549de
								
							
						
					
					
						commit
						f505b7425c
					
				
					 2 changed files with 26 additions and 13 deletions
				
			
		|  | @ -799,12 +799,17 @@ def update_recent_files_list(self, new_file=None): | ||||||
|         rf_list = [path for path in rf_list if path not in bad_paths] |         rf_list = [path for path in rf_list if path not in bad_paths] | ||||||
|         ulchars = "1234567890ABCDEFGHIJK" |         ulchars = "1234567890ABCDEFGHIJK" | ||||||
|         rf_list = rf_list[0:len(ulchars)] |         rf_list = rf_list[0:len(ulchars)] | ||||||
|         rf_file = open(self.recent_files_path, 'w', |  | ||||||
|                         encoding='utf_8', errors='replace') |  | ||||||
|         try: |         try: | ||||||
|             rf_file.writelines(rf_list) |             with open(self.recent_files_path, 'w', | ||||||
|         finally: |                         encoding='utf_8', errors='replace') as rf_file: | ||||||
|             rf_file.close() |                 rf_file.writelines(rf_list) | ||||||
|  |         except IOError as err: | ||||||
|  |             if not getattr(self.root, "recentfilelist_error_displayed", False): | ||||||
|  |                 self.root.recentfilelist_error_displayed = True | ||||||
|  |                 tkMessageBox.showerror(title='IDLE Error', | ||||||
|  |                     message='Unable to update Recent Files list:\n%s' | ||||||
|  |                         % str(err), | ||||||
|  |                     parent=self.text) | ||||||
|         # for each edit window instance, construct the recent files menu |         # for each edit window instance, construct the recent files menu | ||||||
|         for instance in self.top.instance_dict: |         for instance in self.top.instance_dict: | ||||||
|             menu = instance.recent_files_menu |             menu = instance.recent_files_menu | ||||||
|  |  | ||||||
|  | @ -206,14 +206,22 @@ def store_file_breaks(self): | ||||||
|                 lines = fp.readlines() |                 lines = fp.readlines() | ||||||
|         except IOError: |         except IOError: | ||||||
|             lines = [] |             lines = [] | ||||||
|         with open(self.breakpointPath, "w") as new_file: |         try: | ||||||
|             for line in lines: |             with open(self.breakpointPath, "w") as new_file: | ||||||
|                 if not line.startswith(filename + '='): |                 for line in lines: | ||||||
|                     new_file.write(line) |                     if not line.startswith(filename + '='): | ||||||
|             self.update_breakpoints() |                         new_file.write(line) | ||||||
|             breaks = self.breakpoints |                 self.update_breakpoints() | ||||||
|             if breaks: |                 breaks = self.breakpoints | ||||||
|                 new_file.write(filename + '=' + str(breaks) + '\n') |                 if breaks: | ||||||
|  |                     new_file.write(filename + '=' + str(breaks) + '\n') | ||||||
|  |         except IOError as err: | ||||||
|  |             if not getattr(self.root, "breakpoint_error_displayed", False): | ||||||
|  |                 self.root.breakpoint_error_displayed = True | ||||||
|  |                 tkMessageBox.showerror(title='IDLE Error', | ||||||
|  |                     message='Unable to update breakpoint list:\n%s' | ||||||
|  |                         % str(err), | ||||||
|  |                     parent=self.text) | ||||||
| 
 | 
 | ||||||
|     def restore_file_breaks(self): |     def restore_file_breaks(self): | ||||||
|         self.text.update()   # this enables setting "BREAK" tags to be visible |         self.text.update()   # this enables setting "BREAK" tags to be visible | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ned Deily
						Ned Deily