comparison Python/pythonrun.c @ 49613:efef5fc45a9a

Issue 3723: Fixed initialization of subinterpreters The patch fixes several issues with Py_NewInterpreter as well as the demo for multiple subinterpreters. Most of the patch was written by MvL with help from Benjamin, Amaury and me. Graham Dumpleton has verified that this patch fixes an issue with mod_wsgi.
author Christian Heimes <christian@cheimes.de>
date Thu, 30 Oct 2008 21:48:26 +0000
parents 9fc573fbaf5e
children f3234e43e1fe
comparison
equal deleted inserted replaced
49611:9fc573fbaf5e 49613:efef5fc45a9a
560 interp->builtins = PyModule_GetDict(bimod); 560 interp->builtins = PyModule_GetDict(bimod);
561 if (interp->builtins == NULL) 561 if (interp->builtins == NULL)
562 goto handle_error; 562 goto handle_error;
563 Py_INCREF(interp->builtins); 563 Py_INCREF(interp->builtins);
564 } 564 }
565
566 /* initialize builtin exceptions */
567 _PyExc_Init();
568
565 sysmod = _PyImport_FindExtension("sys", "sys"); 569 sysmod = _PyImport_FindExtension("sys", "sys");
566 if (bimod != NULL && sysmod != NULL) { 570 if (bimod != NULL && sysmod != NULL) {
571 PyObject *pstderr;
567 interp->sysdict = PyModule_GetDict(sysmod); 572 interp->sysdict = PyModule_GetDict(sysmod);
568 if (interp->sysdict == NULL) 573 if (interp->sysdict == NULL)
569 goto handle_error; 574 goto handle_error;
570 Py_INCREF(interp->sysdict); 575 Py_INCREF(interp->sysdict);
571 PySys_SetPath(Py_GetPath()); 576 PySys_SetPath(Py_GetPath());
572 PyDict_SetItemString(interp->sysdict, "modules", 577 PyDict_SetItemString(interp->sysdict, "modules",
573 interp->modules); 578 interp->modules);
579 /* Set up a preliminary stderr printer until we have enough
580 infrastructure for the io module in place. */
581 pstderr = PyFile_NewStdPrinter(fileno(stderr));
582 if (pstderr == NULL)
583 Py_FatalError("Py_Initialize: can't set preliminary stderr");
584 PySys_SetObject("stderr", pstderr);
585 PySys_SetObject("__stderr__", pstderr);
586
574 _PyImportHooks_Init(); 587 _PyImportHooks_Init();
588 if (initstdio() < 0)
589 Py_FatalError(
590 "Py_Initialize: can't initialize sys standard streams");
575 initmain(); 591 initmain();
576 if (!Py_NoSiteFlag) 592 if (!Py_NoSiteFlag)
577 initsite(); 593 initsite();
578 } 594 }
579 595