mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Py_Initialize(): Now that standard exceptions are builtin, we don't
need two phase init or fini of the builtin module. Change the call of _PyBuiltin_Init_1() to _PyBuiltin_Init(). Add a call to init_exceptions(). Py_Finalize(): Don't call _PyBuiltin_Fini_1(). Instead call fini_exceptions() but move this to before the thread state is cleared.
This commit is contained in:
		
							parent
							
								
									c094ac856f
								
							
						
					
					
						commit
						f242aa0d1e
					
				
					 1 changed files with 11 additions and 11 deletions
				
			
		|  | @ -152,7 +152,7 @@ Py_Initialize() | |||
| 
 | ||||
| 	_PyCompareState_Key = PyString_InternFromString("cmp_state"); | ||||
| 
 | ||||
| 	bimod = _PyBuiltin_Init_1(); | ||||
| 	bimod = _PyBuiltin_Init(); | ||||
| 	if (bimod == NULL) | ||||
| 		Py_FatalError("Py_Initialize: can't initialize __builtin__"); | ||||
| 	interp->builtins = PyModule_GetDict(bimod); | ||||
|  | @ -170,8 +170,10 @@ Py_Initialize() | |||
| 
 | ||||
| 	_PyImport_Init(); | ||||
| 
 | ||||
| 	/* initialize builtin exceptions */ | ||||
| 	init_exceptions(); | ||||
| 
 | ||||
| 	/* phase 2 of builtins */ | ||||
| 	_PyBuiltin_Init_2(interp->builtins); | ||||
| 	_PyImport_FixupExtension("__builtin__", "__builtin__"); | ||||
| 
 | ||||
| 	initsigs(); /* Signal handling stuff, including initintr() */ | ||||
|  | @ -218,9 +220,6 @@ Py_Finalize() | |||
| 	/* Disable signal handling */ | ||||
| 	PyOS_FiniInterrupts(); | ||||
| 
 | ||||
| 	/* Destroy PyExc_MemoryErrorInst */ | ||||
| 	_PyBuiltin_Fini_1(); | ||||
| 
 | ||||
| 	/* Cleanup Unicode implementation */ | ||||
| 	_PyUnicode_Fini(); | ||||
| 
 | ||||
|  | @ -252,17 +251,18 @@ Py_Finalize() | |||
| 	} | ||||
| #endif /* Py_TRACE_REFS */ | ||||
| 
 | ||||
| 	/* Delete current thread */ | ||||
| 	PyInterpreterState_Clear(interp); | ||||
| 	PyThreadState_Swap(NULL); | ||||
| 	PyInterpreterState_Delete(interp); | ||||
| 
 | ||||
| 	/* Now we decref the exception classes.  After this point nothing
 | ||||
| 	   can raise an exception.  That's okay, because each Fini() method | ||||
| 	   below has been checked to make sure no exceptions are ever | ||||
| 	   raised. | ||||
| 	*/ | ||||
| 	_PyBuiltin_Fini_2(); | ||||
| 	fini_exceptions(); | ||||
| 
 | ||||
| 	/* Delete current thread */ | ||||
| 	PyInterpreterState_Clear(interp); | ||||
| 	PyThreadState_Swap(NULL); | ||||
| 	PyInterpreterState_Delete(interp); | ||||
| 
 | ||||
| 	PyMethod_Fini(); | ||||
| 	PyFrame_Fini(); | ||||
| 	PyCFunction_Fini(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Barry Warsaw
						Barry Warsaw