summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/pyport.h2
-rw-r--r--Objects/setobject.c12
-rw-r--r--Objects/tupleobject.c8
-rw-r--r--Objects/unicodeobject.c2
4 files changed, 12 insertions, 12 deletions
diff --git a/Include/pyport.h b/Include/pyport.h
index 41d9d42..e4e3601 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -145,7 +145,7 @@ Used in: PY_LONG_LONG
#endif
/* Prime multiplier used in string and various other hashes. */
-#define _PyHASH_MULTIPLIER 1000003 /* 0xf4243 */
+#define _PyHASH_MULTIPLIER 1000003UL /* 0xf4243 */
/* Parameters used for the numeric hash implementation. See notes for
_Py_HashDouble in Objects/object.c. Numeric hashes are based on
diff --git a/Objects/setobject.c b/Objects/setobject.c
index 723679a..c484dce 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -77,7 +77,7 @@ NULL if the rich comparison returns an error.
static setentry *
set_lookkey(PySetObject *so, PyObject *key, register Py_hash_t hash)
{
- register size_t i;
+ register size_t i; /* Unsigned for defined overflow behavior. */
register size_t perturb;
register setentry *freeslot;
register size_t mask = so->mask;
@@ -159,7 +159,7 @@ set_lookkey(PySetObject *so, PyObject *key, register Py_hash_t hash)
static setentry *
set_lookkey_unicode(PySetObject *so, PyObject *key, register Py_hash_t hash)
{
- register size_t i;
+ register size_t i; /* Unsigned for defined overflow behavior. */
register size_t perturb;
register setentry *freeslot;
register size_t mask = so->mask;
@@ -760,7 +760,7 @@ static Py_hash_t
frozenset_hash(PyObject *self)
{
PySetObject *so = (PySetObject *)self;
- Py_uhash_t h, hash = 1927868237U;
+ Py_uhash_t h, hash = 1927868237UL;
setentry *entry;
Py_ssize_t pos = 0;
@@ -775,11 +775,11 @@ frozenset_hash(PyObject *self)
hashes so that many distinct combinations collapse to only
a handful of distinct hash values. */
h = entry->hash;
- hash ^= (h ^ (h << 16) ^ 89869747U) * 3644798167U;
+ hash ^= (h ^ (h << 16) ^ 89869747UL) * 3644798167UL;
}
- hash = hash * 69069U + 907133923U;
+ hash = hash * 69069U + 907133923UL;
if (hash == -1)
- hash = 590923713U;
+ hash = 590923713UL;
so->hash = hash;
return hash;
}
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 9c843fa..ec3f91b 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -327,12 +327,12 @@ error:
static Py_hash_t
tuplehash(PyTupleObject *v)
{
- register Py_uhash_t x;
+ register Py_uhash_t x; /* Unsigned for defined overflow behavior. */
register Py_hash_t y;
register Py_ssize_t len = Py_SIZE(v);
register PyObject **p;
Py_uhash_t mult = _PyHASH_MULTIPLIER;
- x = 0x345678;
+ x = 0x345678UL;
p = v->ob_item;
while (--len >= 0) {
y = PyObject_Hash(*p++);
@@ -340,9 +340,9 @@ tuplehash(PyTupleObject *v)
return -1;
x = (x ^ y) * mult;
/* the cast might truncate len; that doesn't change hash stability */
- mult += (Py_hash_t)(82520L + len + len);
+ mult += (Py_hash_t)(82520UL + len + len);
}
- x += 97531L;
+ x += 97531UL;
if (x == (Py_uhash_t)-1)
x = -2;
return x;
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 60a74d6..0b9d652 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -11008,7 +11008,7 @@ static Py_hash_t
unicode_hash(PyObject *self)
{
Py_ssize_t len;
- Py_uhash_t x;
+ Py_uhash_t x; /* Unsigned for defined overflow behavior. */
#ifdef Py_DEBUG
assert(_Py_HashSecret_Initialized);