Try to fix a warning in hash_debug_entry

Apparently some 64-bit platforms don't like it when you say

   unsigned hash(void *p)
   {
      return (unsigned)p;
   }

even if you really honestly don't want the high bits of p.  Perhaps
they will tolerate it if I say the equivalent of

   unsigned hash(void *p)
   {
      return (unsigned) (uintptr_t) p;
   }
This commit is contained in:
Nick Mathewson 2010-01-26 12:08:34 -05:00
parent cef61a2f1b
commit 137f2c602f

View File

@ -157,10 +157,15 @@ struct event_debug_entry {
static inline unsigned
hash_debug_entry(const struct event_debug_entry *e)
{
/* We need to do this silliness to convince compilers that we
* honestly mean to cast e->ptr to an integer, and discard any
* part of it that doesn't fit in an unsigned.
*/
unsigned u = (unsigned) ((ev_uintptr_t) e->ptr);
/* Our hashtable implementation is pretty sensitive to low bits,
* and every struct event is over 64 bytes in size, so we can
* just say... */
return ((unsigned)e->ptr) >> 6;
* just say >>6. */
return (u >> 6);
}
static inline int