mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	Merged revisions 82654 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r82654 | mark.dickinson | 2010-07-08 22:15:36 +0100 (Thu, 08 Jul 2010) | 3 lines Issue #9136: Profiling Decimal gave 'dictionary changed size during iteration'. Remove the use of locals() that caused this error. ........
This commit is contained in:
		
							parent
							
								
									e85aa739ab
								
							
						
					
					
						commit
						9b9e12530d
					
				
					 2 changed files with 35 additions and 15 deletions
				
			
		|  | @ -3756,22 +3756,38 @@ def __init__(self, prec=None, rounding=None, | |||
|                  Emin=None, Emax=None, | ||||
|                  capitals=None, _clamp=0, | ||||
|                  _ignored_flags=None): | ||||
|         if flags is None: | ||||
|             flags = [] | ||||
|         # Set defaults; for everything except flags and _ignored_flags, | ||||
|         # inherit from DefaultContext. | ||||
|         try: | ||||
|             dc = DefaultContext | ||||
|         except NameError: | ||||
|             pass | ||||
| 
 | ||||
|         self.prec = prec if prec is not None else dc.prec | ||||
|         self.rounding = rounding if rounding is not None else dc.rounding | ||||
|         self.Emin = Emin if Emin is not None else dc.Emin | ||||
|         self.Emax = Emax if Emax is not None else dc.Emax | ||||
|         self.capitals = capitals if capitals is not None else dc.capitals | ||||
|         self._clamp = _clamp if _clamp is not None else dc._clamp | ||||
| 
 | ||||
|         if _ignored_flags is None: | ||||
|             _ignored_flags = [] | ||||
|         if not isinstance(flags, dict): | ||||
|             flags = dict([(s, int(s in flags)) for s in _signals]) | ||||
|             del s | ||||
|         if traps is not None and not isinstance(traps, dict): | ||||
|             traps = dict([(s, int(s in traps)) for s in _signals]) | ||||
|             del s | ||||
|         for name, val in locals().items(): | ||||
|             if val is None: | ||||
|                 setattr(self, name, _copy.copy(getattr(DefaultContext, name))) | ||||
|             self._ignored_flags = [] | ||||
|         else: | ||||
|                 setattr(self, name, val) | ||||
|         del self.self | ||||
|             self._ignored_flags = _ignored_flags | ||||
| 
 | ||||
|         if traps is None: | ||||
|             self.traps = dc.traps.copy() | ||||
|         elif not isinstance(traps, dict): | ||||
|             self.traps = dict((s, int(s in traps)) for s in _signals) | ||||
|         else: | ||||
|             self.traps = traps | ||||
| 
 | ||||
|         if flags is None: | ||||
|             self.flags = dict.fromkeys(_signals, 0) | ||||
|         elif not isinstance(flags, dict): | ||||
|             self.flags = dict((s, int(s in flags)) for s in _signals) | ||||
|         else: | ||||
|             self.flags = flags | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         """Show the current context.""" | ||||
|  |  | |||
|  | @ -510,6 +510,10 @@ What's New in Python 2.7 beta 1? | |||
| Core and Builtins | ||||
| ----------------- | ||||
| 
 | ||||
| - Issue #9136: Fix 'dictionary changed size during iteration' | ||||
|   RuntimeError produced when profiling the decimal module.  This was | ||||
|   due to a dangerous iteration over 'locals()' in Context.__init__. | ||||
| 
 | ||||
| - Issue #7301: Add environment variable $PYTHONWARNINGS. | ||||
| 
 | ||||
| - Issue #8329: Don't return the same lists from select.select when no fds are | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Mark Dickinson
						Mark Dickinson