handle an error where long != pointer size i.e. on Win64
the python docs state that the hash shall return a C long, which is unfortunate
the 64 bit pointer value is truncated to 32 bit, so you get collisions after every 4 GiB of Virtual Memory
(one could improve that a little by introducing a special case just for Win64, which is not worth the hassle)