@@ -49,7 +49,6 @@ set_lookkey(PySetObject *so, PyObject *key, register long hash)
4949 setentry * table = so -> table ;
5050 register setentry * entry ;
5151 register int restore_error ;
52- register int checked_error ;
5352 register int cmp ;
5453 PyObject * err_type , * err_value , * err_tb ;
5554 PyObject * startkey ;
@@ -59,13 +58,11 @@ set_lookkey(PySetObject *so, PyObject *key, register long hash)
5958 if (entry -> key == NULL || entry -> key == key )
6059 return entry ;
6160
62- restore_error = checked_error = 0 ;
61+ restore_error = 0 ;
6362 if (entry -> key == dummy )
6463 freeslot = entry ;
6564 else {
6665 if (entry -> hash == hash ) {
67- /* error can't have been checked yet */
68- checked_error = 1 ;
6966 if (_PyErr_OCCURRED ()) {
7067 restore_error = 1 ;
7168 PyErr_Fetch (& err_type , & err_value , & err_tb );
@@ -102,13 +99,10 @@ set_lookkey(PySetObject *so, PyObject *key, register long hash)
10299 if (entry -> key == key )
103100 break ;
104101 if (entry -> hash == hash && entry -> key != dummy ) {
105- if (!checked_error ) {
106- checked_error = 1 ;
107- if (_PyErr_OCCURRED ()) {
108- restore_error = 1 ;
109- PyErr_Fetch (& err_type , & err_value ,
110- & err_tb );
111- }
102+ if (_PyErr_OCCURRED ()) {
103+ restore_error = 1 ;
104+ PyErr_Fetch (& err_type , & err_value ,
105+ & err_tb );
112106 }
113107 startkey = entry -> key ;
114108 cmp = PyObject_RichCompareBool (startkey , key , Py_EQ );
@@ -1267,8 +1261,8 @@ static PyObject *
12671261set_issubset (PySetObject * so , PyObject * other )
12681262{
12691263 PyObject * tmp , * result ;
1270- PyObject * key ;
1271- int pos = 0 ;
1264+ register setentry * entry ;
1265+ register int i ;
12721266
12731267 if (!PyAnySet_Check (other )) {
12741268 tmp = make_new_set (& PySet_Type , other );
@@ -1281,8 +1275,11 @@ set_issubset(PySetObject *so, PyObject *other)
12811275 if (set_len ((PyObject * )so ) > set_len (other ))
12821276 Py_RETURN_FALSE ;
12831277
1284- while (set_next_internal (so , & pos , & key )) {
1285- if (!set_contains_internal ((PySetObject * )other , key ))
1278+ entry = & so -> table [0 ];
1279+ for (i = so -> used ; i ; entry ++ , i -- ) {
1280+ while (entry -> key == NULL || entry -> key == dummy )
1281+ entry ++ ;
1282+ if (!set_contains_internal ((PySetObject * )other , entry -> key ))
12861283 Py_RETURN_FALSE ;
12871284 }
12881285 Py_RETURN_TRUE ;
0 commit comments