@@ -191,7 +191,6 @@ static struct _typeobject wrap_##type = { \
191
191
0 , /* tp_free */ \
192
192
};
193
193
194
- static PyObject * types_mod = NULL ;
195
194
static PyObject * reduce_frame_func = NULL ;
196
195
197
196
PyDoc_STRVAR (set_reduce_frame__doc__ ,
@@ -292,7 +291,7 @@ static struct PyMethodDef _new_methoddef[] = {
292
291
{0 }
293
292
};
294
293
295
- static int init_type (PyTypeObject * t , int (* initchain )(void ) )
294
+ static int init_type (PyTypeObject * t , int (* initchain )(PyObject * ), PyObject * mod )
296
295
{
297
296
PyMethodDescrObject * reduce ;
298
297
PyWrapperDescrObject * init ;
@@ -305,7 +304,7 @@ static int init_type(PyTypeObject *t, int (*initchain)(void))
305
304
t -> tp_basicsize = t -> tp_base -> tp_basicsize ;
306
305
t -> tp_itemsize = t -> tp_base -> tp_itemsize ;
307
306
t -> tp_flags = t -> tp_base -> tp_flags & ~Py_TPFLAGS_READY ;
308
- if (PyObject_SetAttrString (types_mod , name , (PyObject * ) t ))
307
+ if (PyObject_SetAttrString (mod , name , (PyObject * ) t ))
309
308
return -1 ;
310
309
/* patch the method descriptors to require the base type */
311
310
if (PyType_Ready (t )) return -1 ;
@@ -320,7 +319,7 @@ static int init_type(PyTypeObject *t, int (*initchain)(void))
320
319
if (func == NULL || PyDict_SetItemString (t -> tp_dict , "__new__" , func ))
321
320
return -1 ;
322
321
if (initchain != NULL )
323
- return initchain ();
322
+ return initchain (mod );
324
323
return 0 ;
325
324
}
326
325
@@ -648,9 +647,9 @@ code_reduce(PyCodeObject * co)
648
647
MAKE_WRAPPERTYPE (PyCode_Type , code , "code" , code_reduce , generic_new ,
649
648
generic_setstate )
650
649
651
- static int init_codetype (void )
650
+ static int init_codetype (PyObject * mod )
652
651
{
653
- return init_type (& wrap_PyCode_Type , initchain );
652
+ return init_type (& wrap_PyCode_Type , initchain , mod );
654
653
}
655
654
#undef initchain
656
655
#define initchain init_codetype
@@ -724,9 +723,9 @@ cell_setstate(PyObject *self, PyObject *args)
724
723
725
724
MAKE_WRAPPERTYPE (PyCell_Type , cell , "cell" , cell_reduce , cell_new , cell_setstate )
726
725
727
- static int init_celltype (void )
726
+ static int init_celltype (PyObject * mod )
728
727
{
729
- return init_type (& wrap_PyCell_Type , initchain );
728
+ return init_type (& wrap_PyCell_Type , initchain , mod );
730
729
}
731
730
#undef initchain
732
731
#define initchain init_celltype
@@ -816,9 +815,9 @@ func_setstate(PyObject *self, PyObject *args)
816
815
MAKE_WRAPPERTYPE (PyFunction_Type , func , "function" , func_reduce , func_new ,
817
816
func_setstate )
818
817
819
- static int init_functype (void )
818
+ static int init_functype (PyObject * mod )
820
819
{
821
- return init_type (& wrap_PyFunction_Type , initchain );
820
+ return init_type (& wrap_PyFunction_Type , initchain , mod );
822
821
}
823
822
#undef initchain
824
823
#define initchain init_functype
@@ -1188,7 +1187,7 @@ slp_ensure_new_frame(PyFrameObject *f)
1188
1187
1189
1188
MAKE_WRAPPERTYPE (PyFrame_Type , frame , "frame" , frameobject_reduce , frame_new , frame_setstate )
1190
1189
1191
- static int init_frametype (void )
1190
+ static int init_frametype (PyObject * mod )
1192
1191
{
1193
1192
return slp_register_execute (& PyFrame_Type , "eval_frame" ,
1194
1193
PyEval_EvalFrameEx_slp , REF_INVALID_EXEC (eval_frame ))
@@ -1208,7 +1207,7 @@ static int init_frametype(void)
1208
1207
slp_restore_tracing , REF_INVALID_EXEC (slp_restore_tracing ))
1209
1208
|| slp_register_execute (& PyCFrame_Type , "slp_tp_init_callback" ,
1210
1209
slp_tp_init_callback , REF_INVALID_EXEC (slp_tp_init_callback ))
1211
- || init_type (& wrap_PyFrame_Type , initchain );
1210
+ || init_type (& wrap_PyFrame_Type , initchain , mod );
1212
1211
}
1213
1212
#undef initchain
1214
1213
#define initchain init_frametype
@@ -1311,9 +1310,9 @@ tb_setstate(PyObject *self, PyObject *args)
1311
1310
1312
1311
MAKE_WRAPPERTYPE (PyTraceBack_Type , tb , "traceback" , tb_reduce , tb_new , tb_setstate )
1313
1312
1314
- static int init_tracebacktype (void )
1313
+ static int init_tracebacktype (PyObject * mod )
1315
1314
{
1316
- return init_type (& wrap_PyTraceBack_Type , initchain );
1315
+ return init_type (& wrap_PyTraceBack_Type , initchain , mod );
1317
1316
}
1318
1317
#undef initchain
1319
1318
#define initchain init_tracebacktype
@@ -1395,9 +1394,9 @@ module_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
1395
1394
1396
1395
MAKE_WRAPPERTYPE (PyModule_Type , module , "module" , module_reduce , module_new , generic_setstate )
1397
1396
1398
- static int init_moduletype (void )
1397
+ static int init_moduletype (PyObject * mod )
1399
1398
{
1400
- return init_type (& wrap_PyModule_Type , initchain );
1399
+ return init_type (& wrap_PyModule_Type , initchain , mod );
1401
1400
}
1402
1401
#undef initchain
1403
1402
#define initchain init_moduletype
@@ -1483,29 +1482,29 @@ dictitemsview_reduce(_PyDictViewObject *di)
1483
1482
MAKE_WRAPPERTYPE (PyDictKeys_Type , dictkeysview , "dict_keys" ,
1484
1483
dictkeysview_reduce , dictview_new , generic_setstate )
1485
1484
1486
- static int init_dictkeysviewtype (void )
1485
+ static int init_dictkeysviewtype (PyObject * mod )
1487
1486
{
1488
- return init_type (& wrap_PyDictKeys_Type , initchain );
1487
+ return init_type (& wrap_PyDictKeys_Type , initchain , mod );
1489
1488
}
1490
1489
#undef initchain
1491
1490
#define initchain init_dictkeysviewtype
1492
1491
1493
1492
MAKE_WRAPPERTYPE (PyDictValues_Type , dictvaluesview , "dict_values" ,
1494
1493
dictvaluesview_reduce , dictview_new , generic_setstate )
1495
1494
1496
- static int init_dictvaluesviewtype (void )
1495
+ static int init_dictvaluesviewtype (PyObject * mod )
1497
1496
{
1498
- return init_type (& wrap_PyDictValues_Type , initchain );
1497
+ return init_type (& wrap_PyDictValues_Type , initchain , mod );
1499
1498
}
1500
1499
#undef initchain
1501
1500
#define initchain init_dictvaluesviewtype
1502
1501
1503
1502
MAKE_WRAPPERTYPE (PyDictItems_Type , dictitemsview , "dict_items" ,
1504
1503
dictitemsview_reduce , dictview_new , generic_setstate )
1505
1504
1506
- static int init_dictitemsviewtype (void )
1505
+ static int init_dictitemsviewtype (PyObject * mod )
1507
1506
{
1508
- return init_type (& wrap_PyDictItems_Type , initchain );
1507
+ return init_type (& wrap_PyDictItems_Type , initchain , mod );
1509
1508
}
1510
1509
#undef initchain
1511
1510
#define initchain init_dictitemsviewtype
@@ -1811,7 +1810,7 @@ MAKE_WRAPPERTYPE(PyGen_Type, gen, "generator", gen_reduce,
1811
1810
1812
1811
DEF_INVALID_EXEC (gen_iternext_callback )
1813
1812
1814
- static int init_generatortype (void )
1813
+ static int init_generatortype (PyObject * mod )
1815
1814
{
1816
1815
int res ;
1817
1816
PyGenObject * gen = (PyGenObject * ) run_script (
@@ -1826,7 +1825,7 @@ static int init_generatortype(void)
1826
1825
res = slp_register_execute (Py_TYPE (cbframe ), "gen_iternext_callback" ,
1827
1826
gen -> gi_frame -> f_back -> f_execute ,
1828
1827
REF_INVALID_EXEC (gen_iternext_callback ))
1829
- || init_type (& wrap_PyGen_Type , initchain );
1828
+ || init_type (& wrap_PyGen_Type , initchain , mod );
1830
1829
1831
1830
assert (gen_exhausted_frame == NULL );
1832
1831
gen_exhausted_frame = slp_ensure_new_frame (gen -> gi_frame );
@@ -1849,9 +1848,9 @@ coro_reduce(PyGenObject *gen)
1849
1848
MAKE_WRAPPERTYPE (PyCoro_Type , coro , "coroutine" , coro_reduce ,
1850
1849
gen_new , gen_setstate )
1851
1850
1852
- static int init_coroutinetype (void )
1851
+ static int init_coroutinetype (PyObject * mod )
1853
1852
{
1854
- return init_type (& wrap_PyCoro_Type , initchain );
1853
+ return init_type (& wrap_PyCoro_Type , initchain , mod );
1855
1854
}
1856
1855
#undef initchain
1857
1856
#define initchain init_coroutinetype
@@ -1990,15 +1989,13 @@ init_prickelpit(void)
1990
1989
{
1991
1990
PyObject * tmp ;
1992
1991
1993
- types_mod = PyModule_Create (& _wrapmodule );
1994
- if (types_mod == NULL )
1992
+ tmp = PyModule_Create (& _wrapmodule );
1993
+ if (tmp == NULL )
1995
1994
return NULL ;
1996
- if (initchain ()) {
1997
- Py_CLEAR (types_mod );
1995
+ if (initchain (tmp )) {
1996
+ Py_CLEAR (tmp );
1998
1997
return NULL ;
1999
1998
}
2000
- tmp = types_mod ;
2001
- types_mod = NULL ;
2002
1999
return tmp ;
2003
2000
}
2004
2001
0 commit comments