@@ -147,6 +147,7 @@ enum machine_format_code {
147147static int
148148array_resize (arrayobject * self , Py_ssize_t newsize )
149149{
150+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
150151 char * items ;
151152 size_t _new_size ;
152153
@@ -687,6 +688,7 @@ newarrayobject(PyTypeObject *type, Py_ssize_t size, const struct arraydescr *des
687688static PyObject *
688689getarrayitem (PyObject * op , Py_ssize_t i )
689690{
691+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op );
690692#ifndef NDEBUG
691693 array_state * state = find_array_state_by_type (Py_TYPE (op ));
692694 assert (array_Check (op , state ));
@@ -700,6 +702,7 @@ getarrayitem(PyObject *op, Py_ssize_t i)
700702static int
701703ins1 (arrayobject * self , Py_ssize_t where , PyObject * v )
702704{
705+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
703706 char * items ;
704707 Py_ssize_t n = Py_SIZE (self );
705708 if (v == NULL ) {
@@ -911,6 +914,7 @@ array_item(PyObject *op, Py_ssize_t i)
911914static PyObject *
912915array_slice (arrayobject * a , Py_ssize_t ilow , Py_ssize_t ihigh )
913916{
917+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (a );
914918 array_state * state = find_array_state_by_type (Py_TYPE (a ));
915919 arrayobject * np ;
916920
@@ -1071,6 +1075,7 @@ array_repeat(PyObject *op, Py_ssize_t n)
10711075static int
10721076array_del_slice (arrayobject * a , Py_ssize_t ilow , Py_ssize_t ihigh )
10731077{
1078+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (a );
10741079 char * item ;
10751080 Py_ssize_t d ; /* Change in size */
10761081 if (ilow < 0 )
@@ -1104,7 +1109,7 @@ array_del_slice(arrayobject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
11041109}
11051110
11061111static int
1107- array_ass_item_lock_held (PyObject * op , Py_ssize_t i , PyObject * v )
1112+ setarrayitem (PyObject * op , Py_ssize_t i , PyObject * v )
11081113{
11091114 _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op );
11101115 arrayobject * a = arrayobject_CAST (op );
@@ -1123,24 +1128,16 @@ array_ass_item(PyObject *op, Py_ssize_t i, PyObject *v)
11231128{
11241129 int ret ;
11251130 Py_BEGIN_CRITICAL_SECTION (op );
1126- ret = array_ass_item_lock_held (op , i , v );
1131+ ret = setarrayitem (op , i , v );
11271132 Py_END_CRITICAL_SECTION ();
11281133 return ret ;
11291134}
11301135
1131- static int
1132- setarrayitem (PyObject * a , Py_ssize_t i , PyObject * v )
1133- {
1134- #ifndef NDEBUG
1135- array_state * state = find_array_state_by_type (Py_TYPE (a ));
1136- assert (array_Check (a , state ));
1137- #endif
1138- return array_ass_item (a , i , v );
1139- }
1140-
11411136static int
11421137array_iter_extend (arrayobject * self , PyObject * bb )
11431138{
1139+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (self );
1140+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (bb );
11441141 PyObject * it , * v ;
11451142
11461143 it = PyObject_GetIter (bb );
@@ -2647,12 +2644,12 @@ static int
26472644array_ass_subscr_lock_held (PyObject * op , PyObject * item , PyObject * value )
26482645{
26492646 _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op );
2647+ #ifdef Py_DEBUG
2648+ if (value != NULL ) {
2649+ _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (value );
2650+ }
2651+ #endif
26502652 arrayobject * self = arrayobject_CAST (op );
2651- #ifdef Py_DEBUG
2652- if (value != NULL ) {
2653- _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (value );
2654- }
2655- #endif
26562653 Py_ssize_t start , stop , step , slicelength , needed ;
26572654 array_state * state = find_array_state_by_type (Py_TYPE (self ));
26582655 arrayobject * other ;
@@ -3316,11 +3313,9 @@ array_arrayiterator___reduce___impl(arrayiterobject *self, PyTypeObject *cls)
33163313 PyObject * ret = NULL ;
33173314 Py_ssize_t index = FT_ATOMIC_LOAD_SSIZE_RELAXED (self -> index );
33183315 if (index >= 0 ) {
3319- Py_BEGIN_CRITICAL_SECTION (self -> ao );
33203316 if (index <= Py_SIZE (self -> ao )) {
33213317 ret = Py_BuildValue ("N(O)n" , func , self -> ao , index );
33223318 }
3323- Py_END_CRITICAL_SECTION ();
33243319 }
33253320 if (ret == NULL ) {
33263321 ret = Py_BuildValue ("N(())" , func );
0 commit comments