@@ -558,7 +558,7 @@ pycore_create_interpreter(_PyRuntimeState *runtime,
558558
559559
560560static PyStatus
561- pycore_init_types (PyThreadState * tstate )
561+ pycore_init_types (PyThreadState * tstate , int is_main_interp )
562562{
563563 PyStatus status ;
564564
@@ -567,40 +567,46 @@ pycore_init_types(PyThreadState *tstate)
567567 return status ;
568568 }
569569
570- status = _PyTypes_Init ();
571- if (_PyStatus_EXCEPTION (status )) {
572- return status ;
573- }
570+ if (is_main_interp ) {
571+ status = _PyTypes_Init ();
572+ if (_PyStatus_EXCEPTION (status )) {
573+ return status ;
574+ }
574575
575- if (!_PyLong_Init ()) {
576- return _PyStatus_ERR ("can't init longs" );
577- }
576+ if (!_PyLong_Init ()) {
577+ return _PyStatus_ERR ("can't init longs" );
578+ }
578579
579- status = _PyUnicode_Init ();
580- if (_PyStatus_EXCEPTION (status )) {
581- return status ;
580+ status = _PyUnicode_Init ();
581+ if (_PyStatus_EXCEPTION (status )) {
582+ return status ;
583+ }
582584 }
583585
584586 status = _PyExc_Init ();
585587 if (_PyStatus_EXCEPTION (status )) {
586588 return status ;
587589 }
588590
589- if (!_PyFloat_Init ()) {
590- return _PyStatus_ERR ("can't init float" );
591- }
591+ if (is_main_interp ) {
592+ if (!_PyFloat_Init ()) {
593+ return _PyStatus_ERR ("can't init float" );
594+ }
592595
593- if (_PyStructSequence_Init () < 0 ) {
594- return _PyStatus_ERR ("can't initialize structseq" );
596+ if (_PyStructSequence_Init () < 0 ) {
597+ return _PyStatus_ERR ("can't initialize structseq" );
598+ }
595599 }
596600
597601 status = _PyErr_Init ();
598602 if (_PyStatus_EXCEPTION (status )) {
599603 return status ;
600604 }
601605
602- if (!_PyContext_Init ()) {
603- return _PyStatus_ERR ("can't init context" );
606+ if (is_main_interp ) {
607+ if (!_PyContext_Init ()) {
608+ return _PyStatus_ERR ("can't init context" );
609+ }
604610 }
605611
606612 return _PyStatus_OK ();
@@ -690,7 +696,7 @@ pyinit_config(_PyRuntimeState *runtime,
690696 config = & tstate -> interp -> config ;
691697 * tstate_p = tstate ;
692698
693- status = pycore_init_types (tstate );
699+ status = pycore_init_types (tstate , 1 );
694700 if (_PyStatus_EXCEPTION (status )) {
695701 return status ;
696702 }
@@ -1477,7 +1483,7 @@ new_interpreter(PyThreadState **tstate_p)
14771483 }
14781484 config = & interp -> config ;
14791485
1480- status = pycore_init_types (tstate );
1486+ status = pycore_init_types (tstate , 0 );
14811487
14821488 /* XXX The following is lax in error checking */
14831489 PyObject * modules = PyDict_New ();
0 commit comments