@@ -835,10 +835,12 @@ dropwhile_next(dropwhileobject *lz)
835835 PyObject * item , * good ;
836836 PyObject * it = lz -> it ;
837837 long ok ;
838+ PyObject * (* iternext )(PyObject * );
838839
840+ assert (PyIter_Check (it ));
841+ iternext = * it -> ob_type -> tp_iternext ;
839842 for (;;) {
840- assert (PyIter_Check (it ));
841- item = (* it -> ob_type -> tp_iternext )(it );
843+ item = iternext (it );
842844 if (item == NULL )
843845 return NULL ;
844846 if (lz -> start == 1 )
@@ -1170,10 +1172,12 @@ islice_next(isliceobject *lz)
11701172 PyObject * item ;
11711173 PyObject * it = lz -> it ;
11721174 long oldnext ;
1175+ PyObject * (* iternext )(PyObject * );
11731176
1177+ assert (PyIter_Check (it ));
1178+ iternext = * it -> ob_type -> tp_iternext ;
11741179 while (lz -> cnt < lz -> next ) {
1175- assert (PyIter_Check (it ));
1176- item = (* it -> ob_type -> tp_iternext )(it );
1180+ item = iternext (it );
11771181 if (item == NULL )
11781182 return NULL ;
11791183 Py_DECREF (item );
@@ -1182,7 +1186,7 @@ islice_next(isliceobject *lz)
11821186 if (lz -> stop != -1 && lz -> cnt >= lz -> stop )
11831187 return NULL ;
11841188 assert (PyIter_Check (it ));
1185- item = ( * it -> ob_type -> tp_iternext ) (it );
1189+ item = iternext (it );
11861190 if (item == NULL )
11871191 return NULL ;
11881192 lz -> cnt ++ ;
@@ -1783,10 +1787,12 @@ ifilter_next(ifilterobject *lz)
17831787 PyObject * item ;
17841788 PyObject * it = lz -> it ;
17851789 long ok ;
1790+ PyObject * (* iternext )(PyObject * );
17861791
1792+ assert (PyIter_Check (it ));
1793+ iternext = * it -> ob_type -> tp_iternext ;
17871794 for (;;) {
1788- assert (PyIter_Check (it ));
1789- item = (* it -> ob_type -> tp_iternext )(it );
1795+ item = iternext (it );
17901796 if (item == NULL )
17911797 return NULL ;
17921798
@@ -1932,10 +1938,12 @@ ifilterfalse_next(ifilterfalseobject *lz)
19321938 PyObject * item ;
19331939 PyObject * it = lz -> it ;
19341940 long ok ;
1941+ PyObject * (* iternext )(PyObject * );
19351942
1943+ assert (PyIter_Check (it ));
1944+ iternext = * it -> ob_type -> tp_iternext ;
19361945 for (;;) {
1937- assert (PyIter_Check (it ));
1938- item = (* it -> ob_type -> tp_iternext )(it );
1946+ item = iternext (it );
19391947 if (item == NULL )
19401948 return NULL ;
19411949
0 commit comments