summaryrefslogtreecommitdiff
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2000-05-25 23:09:49 +0000
committerBarry Warsaw <barry@python.org>2000-05-25 23:09:49 +0000
commitf242aa0d1e7625a7ccbbd629bae2d88a95408ad3 (patch)
tree0c53288b85e2e9c3bc8eb174129d1b57a8006c0c /Python/pythonrun.c
parentc094ac856f7031eae727fa200241da0c88d29951 (diff)
downloadcpython-git-f242aa0d1e7625a7ccbbd629bae2d88a95408ad3.tar.gz
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.
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index ee6ce07ba1..7760714654 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -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();