mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	#7627: MH.remove() would fail if the MH mailbox was locked;
it would call _unlock_file() and pass it a closed file object. Noted by Rob Austein.
This commit is contained in:
		
							parent
							
								
									72aae73d47
								
							
						
					
					
						commit
						b72b0eb357
					
				
					 2 changed files with 9 additions and 10 deletions
				
			
		|  | @ -892,17 +892,9 @@ def remove(self, key): | |||
|                 raise KeyError('No message with key: %s' % key) | ||||
|             else: | ||||
|                 raise | ||||
|         try: | ||||
|             if self._locked: | ||||
|                 _lock_file(f) | ||||
|             try: | ||||
|                 f.close() | ||||
|                 os.remove(os.path.join(self._path, str(key))) | ||||
|             finally: | ||||
|                 if self._locked: | ||||
|                     _unlock_file(f) | ||||
|         finally: | ||||
|         else: | ||||
|             f.close() | ||||
|             os.remove(path) | ||||
| 
 | ||||
|     def __setitem__(self, key, message): | ||||
|         """Replace the keyed message; raise KeyError if it doesn't exist.""" | ||||
|  |  | |||
|  | @ -979,6 +979,13 @@ def test_issue2625(self): | |||
|         key0 = self._box.add(msg0) | ||||
|         refmsg0 = self._box.get_message(key0) | ||||
| 
 | ||||
|     def test_issue7627(self): | ||||
|         msg0 = mailbox.MHMessage(self._template % 0) | ||||
|         key0 = self._box.add(msg0) | ||||
|         self._box.lock() | ||||
|         self._box.remove(key0) | ||||
|         self._box.unlock() | ||||
| 
 | ||||
|     def test_pack(self): | ||||
|         # Pack the contents of the mailbox | ||||
|         msg0 = mailbox.MHMessage(self._template % 0) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andrew M. Kuchling
						Andrew M. Kuchling