@@ -598,6 +598,7 @@ PyType_Spec pyctype_type_spec = {
598598static PyCArgObject *
599599StructUnionType_paramfunc_lock_held (ctypes_state * st , CDataObject * self )
600600{
601+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
601602 PyCArgObject * parg ;
602603 PyObject * obj ;
603604 void * ptr ;
@@ -1563,6 +1564,7 @@ static PyGetSetDef CharArray_getsets[] = {
15631564static PyObject *
15641565WCharArray_get_value_lock_held (PyObject * op )
15651566{
1567+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op );
15661568 Py_ssize_t i ;
15671569 PyObject * res ;
15681570 CDataObject * self = _CDataObject_CAST (op );
@@ -1587,6 +1589,7 @@ WCharArray_get_value(PyObject *op, void *Py_UNUSED(ignored))
15871589static int
15881590WCharArray_set_value_lock_held (PyObject * op , PyObject * value )
15891591{
1592+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op );
15901593 CDataObject * self = _CDataObject_CAST (op );
15911594
15921595 if (value == NULL ) {
@@ -2240,6 +2243,7 @@ static PyObject *CreateSwappedType(ctypes_state *st, PyTypeObject *type,
22402243static PyCArgObject *
22412244PyCSimpleType_paramfunc_lock_held (ctypes_state * st , CDataObject * self )
22422245{
2246+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
22432247 const char * fmt ;
22442248 PyCArgObject * parg ;
22452249 struct fielddesc * fd ;
@@ -2836,6 +2840,7 @@ static PyType_Spec pycfuncptr_type_spec = {
28362840static CDataObject *
28372841PyCData_GetContainer_lock_held (CDataObject * self )
28382842{
2843+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
28392844 while (self -> b_base ) {
28402845 self = self -> b_base ;
28412846 }
@@ -2897,6 +2902,7 @@ unique_key(CDataObject *target, Py_ssize_t index)
28972902static int
28982903KeepRef_lock_held (CDataObject * target , Py_ssize_t index , PyObject * keep )
28992904{
2905+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (target );
29002906 int result ;
29012907 CDataObject * ob ;
29022908 PyObject * key ;
@@ -4492,6 +4498,7 @@ _build_result(PyObject *result, PyObject *callargs,
44924498static PyObject *
44934499PyCFuncPtr_call_lock_held (PyObject * op , PyObject * inargs , PyObject * kwds )
44944500{
4501+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op );
44954502 PyObject * restype ;
44964503 PyObject * converters ;
44974504 PyObject * checker ;
@@ -5422,6 +5429,7 @@ static PyObject *
54225429Pointer_item_lock_held (PyObject * myself , Py_ssize_t index )
54235430{
54245431 CDataObject * self = _CDataObject_CAST (myself );
5432+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
54255433 Py_ssize_t size ;
54265434 Py_ssize_t offset ;
54275435 PyObject * proto ;
@@ -5471,6 +5479,7 @@ static int
54715479Pointer_ass_item_lock_held (PyObject * myself , Py_ssize_t index , PyObject * value )
54725480{
54735481 CDataObject * self = _CDataObject_CAST (myself );
5482+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
54745483 Py_ssize_t size ;
54755484 Py_ssize_t offset ;
54765485 PyObject * proto ;
@@ -5525,6 +5534,7 @@ Pointer_ass_item(PyObject *self, Py_ssize_t index, PyObject *value)
55255534static PyObject *
55265535Pointer_get_contents_lock_held (PyObject * self , void * closure )
55275536{
5537+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
55285538 void * deref = * (void * * )_CDataObject_CAST (self )-> b_ptr ;
55295539 if (deref == NULL ) {
55305540 PyErr_SetString (PyExc_ValueError ,
@@ -5555,6 +5565,7 @@ Pointer_get_contents(PyObject *self, void *closure)
55555565static int
55565566Pointer_set_contents_lock_held (PyObject * op , PyObject * value , void * closure )
55575567{
5568+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op );
55585569 CDataObject * dst ;
55595570 PyObject * keep ;
55605571 CDataObject * self = _CDataObject_CAST (op );
@@ -5651,6 +5662,7 @@ static int
56515662copy_pointer_to_list_lock_held (PyObject * myself , PyObject * np , Py_ssize_t len ,
56525663 Py_ssize_t start , Py_ssize_t step )
56535664{
5665+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (myself );
56545666 Py_ssize_t i ;
56555667 size_t cur ;
56565668 for (cur = start , i = 0 ; i < len ; cur += step , i ++ ) {
@@ -5804,7 +5816,7 @@ Pointer_subscript(PyObject *myself, PyObject *item)
58045816 return NULL ;
58055817
58065818 int res ;
5807- Py_BEGIN_CRITICAL_SECTION (self );
5819+ Py_BEGIN_CRITICAL_SECTION (myself );
58085820 res = copy_pointer_to_list_lock_held (myself , np , len , start , step );
58095821 Py_END_CRITICAL_SECTION ();
58105822 if (res < 0 ) {
@@ -5979,6 +5991,7 @@ cast_check_pointertype(ctypes_state *st, PyObject *arg)
59795991static PyObject *
59805992cast_lock_held (void * ptr , PyObject * src , PyObject * ctype )
59815993{
5994+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (src );
59825995 PyObject * mod = PyType_GetModuleByDef (Py_TYPE (ctype ), & _ctypesmodule );
59835996 if (!mod ) {
59845997 PyErr_SetString (PyExc_TypeError ,
0 commit comments