summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Objects/intobject.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 6264920..3598c90 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -237,6 +237,8 @@ static long
int_hash(v)
intobject *v;
{
+ /* XXX If this is changed, you also need to change the way
+ Python's long, float and complex types are hashed. */
long x = v -> ob_ival;
if (x == -1)
x = -2;
@@ -385,13 +387,13 @@ int_mul(v, w)
(NB b == bl in this case, and we make a = al) */
y = ah*b;
- if (y >= (1L << (LONG_BIT/2)))
+ if (y >= (1L << (LONG_BIT/2 - 1)))
goto bad;
a &= (1L << (LONG_BIT/2)) - 1;
x = a*b;
if (x < 0)
goto bad;
- x += y << LONG_BIT/2;
+ x += y << (LONG_BIT/2);
if (x < 0)
goto bad;
ok: