Fixes #48. (this time for sure!)
R=r, r1
https://golang.org/cl/152088
h = 0;
for(cp = name; *cp; h += *cp++)
h *= 1119;
- if(h < 0)
- h = ~h;
- return h;
+
+ // the code used to say
+ // if(h < 0)
+ // h = ~h;
+ // but on gcc 4.3 with -O2 on some systems,
+ // the if(h < 0) gets compiled away as not possible.
+ // use a mask instead, leaving plenty of bits but
+ // definitely not the sign bit.
+
+ return h & 0xfffffff;
}
int