comparison Python/pythonrun.c @ 43848:e162e881ea5f

Moved the initalization of the exception before the initialization of sys. On Windows _PySys_Init() could raise an uninitialized exception which leads to a seg fault.
author Christian Heimes <christian@cheimes.de>
date Wed, 14 Nov 2007 00:16:07 +0000
parents 241281123fd8
children ee081609cee8
comparison
equal deleted inserted replaced
43847:0377ba9bc359 43848:e162e881ea5f
215 interp->builtins = PyModule_GetDict(bimod); 215 interp->builtins = PyModule_GetDict(bimod);
216 if (interp->builtins == NULL) 216 if (interp->builtins == NULL)
217 Py_FatalError("Py_Initialize: can't initialize builtins dict"); 217 Py_FatalError("Py_Initialize: can't initialize builtins dict");
218 Py_INCREF(interp->builtins); 218 Py_INCREF(interp->builtins);
219 219
220 /* initialize builtin exceptions */
221 _PyExc_Init();
222
220 sysmod = _PySys_Init(); 223 sysmod = _PySys_Init();
221 if (sysmod == NULL) 224 if (sysmod == NULL)
222 Py_FatalError("Py_Initialize: can't initialize sys"); 225 Py_FatalError("Py_Initialize: can't initialize sys");
223 interp->sysdict = PyModule_GetDict(sysmod); 226 interp->sysdict = PyModule_GetDict(sysmod);
224 if (interp->sysdict == NULL) 227 if (interp->sysdict == NULL)
236 Py_FatalError("Py_Initialize: can't set preliminary stderr"); 239 Py_FatalError("Py_Initialize: can't set preliminary stderr");
237 PySys_SetObject("stderr", pstderr); 240 PySys_SetObject("stderr", pstderr);
238 PySys_SetObject("__stderr__", pstderr); 241 PySys_SetObject("__stderr__", pstderr);
239 242
240 _PyImport_Init(); 243 _PyImport_Init();
241
242 /* initialize builtin exceptions */
243 _PyExc_Init();
244 244
245 /* phase 2 of builtins */ 245 /* phase 2 of builtins */
246 _PyImport_FixupExtension("__builtin__", "__builtin__"); 246 _PyImport_FixupExtension("__builtin__", "__builtin__");
247 247
248 _PyImportHooks_Init(); 248 _PyImportHooks_Init();