diff Python/pythonrun.c @ 12754:5213abfe5230 legacy-trunk

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.
author Barry Warsaw <barry@python.org>
date Thu, 25 May 2000 23:09:49 +0000
parents 1c7c2dd1beb1
children 63436719d12e
line wrap: on
line diff
--- a/Python/pythonrun.c	Thu May 25 23:05:36 2000 +0000
+++ b/Python/pythonrun.c	Thu May 25 23:09:49 2000 +0000
@@ -152,7 +152,7 @@
 
 	_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 @@
 
 	_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 @@
 	/* Disable signal handling */
 	PyOS_FiniInterrupts();
 
-	/* Destroy PyExc_MemoryErrorInst */
-	_PyBuiltin_Fini_1();
-
 	/* Cleanup Unicode implementation */
 	_PyUnicode_Fini();
 
@@ -252,17 +251,18 @@
 	}
 #endif /* Py_TRACE_REFS */
 
+	/* 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.
+	*/
+	fini_exceptions();
+
 	/* 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();
 	PyMethod_Fini();
 	PyFrame_Fini();
 	PyCFunction_Fini();