@@ -489,9 +489,8 @@ _extensions_cache_clear(void)
489
489
Py_CLEAR (_PyRuntime .imports .extensions );
490
490
}
491
491
492
- int
493
- _PyImport_FixupExtensionObject (PyObject * mod , PyObject * name ,
494
- PyObject * filename , PyObject * modules )
492
+ static int
493
+ fix_up_extension (PyObject * mod , PyObject * name , PyObject * filename )
495
494
{
496
495
if (mod == NULL || !PyModule_Check (mod )) {
497
496
PyErr_BadInternalCall ();
@@ -505,11 +504,7 @@ _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
505
504
}
506
505
507
506
PyThreadState * tstate = _PyThreadState_GET ();
508
- if (PyObject_SetItem (modules , name , mod ) < 0 ) {
509
- return -1 ;
510
- }
511
507
if (_PyState_AddModule (tstate , mod , def ) < 0 ) {
512
- PyMapping_DelItem (modules , name );
513
508
return -1 ;
514
509
}
515
510
@@ -541,15 +536,39 @@ _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
541
536
return 0 ;
542
537
}
543
538
539
+ int
540
+ _PyImport_FixupExtensionObject (PyObject * mod , PyObject * name ,
541
+ PyObject * filename , PyObject * modules )
542
+ {
543
+ if (PyObject_SetItem (modules , name , mod ) < 0 ) {
544
+ return -1 ;
545
+ }
546
+ if (fix_up_extension (mod , name , filename ) < 0 ) {
547
+ PyMapping_DelItem (modules , name );
548
+ return -1 ;
549
+ }
550
+ return 0 ;
551
+ }
552
+
544
553
int
545
554
_PyImport_FixupBuiltin (PyObject * mod , const char * name , PyObject * modules )
546
555
{
547
- int res ;
556
+ int res = -1 ;
548
557
PyObject * nameobj ;
549
558
nameobj = PyUnicode_InternFromString (name );
550
- if (nameobj == NULL )
559
+ if (nameobj == NULL ) {
551
560
return -1 ;
552
- res = _PyImport_FixupExtensionObject (mod , nameobj , nameobj , modules );
561
+ }
562
+ if (PyObject_SetItem (modules , nameobj , mod ) < 0 ) {
563
+ goto finally ;
564
+ }
565
+ if (fix_up_extension (mod , nameobj , nameobj ) < 0 ) {
566
+ PyMapping_DelItem (modules , nameobj );
567
+ goto finally ;
568
+ }
569
+ res = 0 ;
570
+
571
+ finally :
553
572
Py_DECREF (nameobj );
554
573
return res ;
555
574
}
0 commit comments