@@ -968,8 +968,13 @@ array_count(arrayobject *self, PyObject *v)
968968 Py_ssize_t i ;
969969
970970 for (i = 0 ; i < Py_SIZE (self ); i ++ ) {
971- PyObject * selfi = getarrayitem ((PyObject * )self , i );
972- int cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
971+ PyObject * selfi ;
972+ int cmp ;
973+
974+ selfi = getarrayitem ((PyObject * )self , i );
975+ if (selfi == NULL )
976+ return NULL ;
977+ cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
973978 Py_DECREF (selfi );
974979 if (cmp > 0 )
975980 count ++ ;
@@ -990,8 +995,13 @@ array_index(arrayobject *self, PyObject *v)
990995 Py_ssize_t i ;
991996
992997 for (i = 0 ; i < Py_SIZE (self ); i ++ ) {
993- PyObject * selfi = getarrayitem ((PyObject * )self , i );
994- int cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
998+ PyObject * selfi ;
999+ int cmp ;
1000+
1001+ selfi = getarrayitem ((PyObject * )self , i );
1002+ if (selfi == NULL )
1003+ return NULL ;
1004+ cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
9951005 Py_DECREF (selfi );
9961006 if (cmp > 0 ) {
9971007 return PyLong_FromLong ((long )i );
@@ -1016,6 +1026,8 @@ array_contains(arrayobject *self, PyObject *v)
10161026
10171027 for (i = 0 , cmp = 0 ; cmp == 0 && i < Py_SIZE (self ); i ++ ) {
10181028 PyObject * selfi = getarrayitem ((PyObject * )self , i );
1029+ if (selfi == NULL )
1030+ return NULL ;
10191031 cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
10201032 Py_DECREF (selfi );
10211033 }
@@ -1028,8 +1040,13 @@ array_remove(arrayobject *self, PyObject *v)
10281040 int i ;
10291041
10301042 for (i = 0 ; i < Py_SIZE (self ); i ++ ) {
1031- PyObject * selfi = getarrayitem ((PyObject * )self ,i );
1032- int cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
1043+ PyObject * selfi ;
1044+ int cmp ;
1045+
1046+ selfi = getarrayitem ((PyObject * )self ,i );
1047+ if (selfi == NULL )
1048+ return NULL ;
1049+ cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
10331050 Py_DECREF (selfi );
10341051 if (cmp > 0 ) {
10351052 if (array_ass_slice (self , i , i + 1 ,
@@ -1068,7 +1085,9 @@ array_pop(arrayobject *self, PyObject *args)
10681085 PyErr_SetString (PyExc_IndexError , "pop index out of range" );
10691086 return NULL ;
10701087 }
1071- v = getarrayitem ((PyObject * )self ,i );
1088+ v = getarrayitem ((PyObject * )self , i );
1089+ if (v == NULL )
1090+ return NULL ;
10721091 if (array_ass_slice (self , i , i + 1 , (PyObject * )NULL ) != 0 ) {
10731092 Py_DECREF (v );
10741093 return NULL ;
0 commit comments