@@ -558,7 +558,7 @@ pycore_create_interpreter(_PyRuntimeState *runtime,
558
558
559
559
560
560
static PyStatus
561
- pycore_init_types (PyThreadState * tstate )
561
+ pycore_init_types (PyThreadState * tstate , int is_main_interp )
562
562
{
563
563
PyStatus status ;
564
564
@@ -567,40 +567,46 @@ pycore_init_types(PyThreadState *tstate)
567
567
return status ;
568
568
}
569
569
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
+ }
574
575
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
+ }
578
579
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
+ }
582
584
}
583
585
584
586
status = _PyExc_Init ();
585
587
if (_PyStatus_EXCEPTION (status )) {
586
588
return status ;
587
589
}
588
590
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
+ }
592
595
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
+ }
595
599
}
596
600
597
601
status = _PyErr_Init ();
598
602
if (_PyStatus_EXCEPTION (status )) {
599
603
return status ;
600
604
}
601
605
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
+ }
604
610
}
605
611
606
612
return _PyStatus_OK ();
@@ -690,7 +696,7 @@ pyinit_config(_PyRuntimeState *runtime,
690
696
config = & tstate -> interp -> config ;
691
697
* tstate_p = tstate ;
692
698
693
- status = pycore_init_types (tstate );
699
+ status = pycore_init_types (tstate , 1 );
694
700
if (_PyStatus_EXCEPTION (status )) {
695
701
return status ;
696
702
}
@@ -1477,7 +1483,7 @@ new_interpreter(PyThreadState **tstate_p)
1477
1483
}
1478
1484
config = & interp -> config ;
1479
1485
1480
- status = pycore_init_types (tstate );
1486
+ status = pycore_init_types (tstate , 0 );
1481
1487
1482
1488
/* XXX The following is lax in error checking */
1483
1489
PyObject * modules = PyDict_New ();
0 commit comments