stop casting small integers to (void *)
Recently someone on IRC seemed confused about some
(void *) variables holding the value
(void *)1. Converting integers to pointers is implementation defined, and could create invalid pointers. (Any use of an invalid pointer, including assignment or comparison, is undefined behavior.) In addition, it's confusing to people who are less familiar with C.
Many of these uses seem to involve container types that treat a null pointer as an absence of an entry, but in situations there's no meaningful object to point to if the entry is present. Storing the addresses of small statically allocated objects might be better.