Fix overflow test for multiply to catch some cases it missed.
Added warning about dependency of float/complex hash on int hash.
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 @@
 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 @@
 			(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: