Commit 541cdd84 authored by Guido van Rossum's avatar Guido van Rossum

Fix overflow test for multiply to catch some cases it missed.

Added warning about dependency of float/complex hash on int hash.
parent d81a1baa
......@@ -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:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment