Mercurial > cpython-lru_cache-weakref
diff Objects/bytesobject.c @ 80820:5c4e440852db 3.2
Fix the internals of our hash functions to used unsigned values during hash
computation as the overflow behavior of signed integers is undefined.
In practice we require compiling everything with -fwrapv which forces overflow
to be defined as twos compliment but this keeps the code cleaner for checkers
or in the case where someone has compiled it without -fwrapv or their
compiler's equivalent.
Found by Clang trunk's Undefined Behavior Sanitizer (UBSan).
Cleanup only - no functionality or hash values change.
| author | Gregory P. Smith <greg@krypto.org> |
|---|---|
| date | Mon, 10 Dec 2012 18:15:46 -0800 |
| parents | 5168483316b5 |
| children | 22594c5060eb 8b4fff41dee5 |
line wrap: on
line diff
--- a/Objects/bytesobject.c Mon Dec 10 17:44:44 2012 -0800 +++ b/Objects/bytesobject.c Mon Dec 10 18:15:46 2012 -0800 @@ -873,7 +873,7 @@ { register Py_ssize_t len; register unsigned char *p; - register Py_hash_t x; + register Py_uhash_t x; /* Unsigned for defined overflow behavior. */ #ifdef Py_DEBUG assert(_Py_HashSecret_Initialized);
