@@ -77,7 +77,7 @@ NULL if the rich comparison returns an error.
7777static setentry *
7878set_lookkey (PySetObject * so , PyObject * key , register Py_hash_t hash )
7979{
80- register Py_ssize_t i ;
80+ register size_t i ;
8181 register size_t perturb ;
8282 register setentry * freeslot ;
8383 register size_t mask = so -> mask ;
@@ -86,7 +86,7 @@ set_lookkey(PySetObject *so, PyObject *key, register Py_hash_t hash)
8686 register int cmp ;
8787 PyObject * startkey ;
8888
89- i = hash & mask ;
89+ i = ( size_t ) hash & mask ;
9090 entry = & table [i ];
9191 if (entry -> key == NULL || entry -> key == key )
9292 return entry ;
@@ -159,7 +159,7 @@ set_lookkey(PySetObject *so, PyObject *key, register Py_hash_t hash)
159159static setentry *
160160set_lookkey_unicode (PySetObject * so , PyObject * key , register Py_hash_t hash )
161161{
162- register Py_ssize_t i ;
162+ register size_t i ;
163163 register size_t perturb ;
164164 register setentry * freeslot ;
165165 register size_t mask = so -> mask ;
@@ -174,7 +174,7 @@ set_lookkey_unicode(PySetObject *so, PyObject *key, register Py_hash_t hash)
174174 so -> lookup = set_lookkey ;
175175 return set_lookkey (so , key , hash );
176176 }
177- i = hash & mask ;
177+ i = ( size_t ) hash & mask ;
178178 entry = & table [i ];
179179 if (entry -> key == NULL || entry -> key == key )
180180 return entry ;
@@ -256,7 +256,7 @@ set_insert_clean(register PySetObject *so, PyObject *key, Py_hash_t hash)
256256 setentry * table = so -> table ;
257257 register setentry * entry ;
258258
259- i = hash & mask ;
259+ i = ( size_t ) hash & mask ;
260260 entry = & table [i ];
261261 for (perturb = hash ; entry -> key != NULL ; perturb >>= PERTURB_SHIFT ) {
262262 i = (i << 2 ) + i + perturb + 1 ;
@@ -770,26 +770,26 @@ static Py_hash_t
770770frozenset_hash (PyObject * self )
771771{
772772 PySetObject * so = (PySetObject * )self ;
773- Py_hash_t h , hash = 1927868237L ;
773+ Py_uhash_t h , hash = 1927868237U ;
774774 setentry * entry ;
775775 Py_ssize_t pos = 0 ;
776776
777777 if (so -> hash != -1 )
778778 return so -> hash ;
779779
780- hash *= PySet_GET_SIZE (self ) + 1 ;
780+ hash *= ( Py_uhash_t ) PySet_GET_SIZE (self ) + 1 ;
781781 while (set_next (so , & pos , & entry )) {
782782 /* Work to increase the bit dispersion for closely spaced hash
783783 values. The is important because some use cases have many
784784 combinations of a small number of elements with nearby
785785 hashes so that many distinct combinations collapse to only
786786 a handful of distinct hash values. */
787787 h = entry -> hash ;
788- hash ^= (h ^ (h << 16 ) ^ 89869747L ) * 3644798167u ;
788+ hash ^= (h ^ (h << 16 ) ^ 89869747U ) * 3644798167U ;
789789 }
790- hash = hash * 69069L + 907133923L ;
790+ hash = hash * 69069U + 907133923U ;
791791 if (hash == -1 )
792- hash = 590923713L ;
792+ hash = 590923713U ;
793793 so -> hash = hash ;
794794 return hash ;
795795}
0 commit comments