Eric Blake wrote: > According to Eric Blake on 6/7/2009 9:51 PM: >> According to Jim Meyering on 6/6/2009 2:41 PM: >>> A few of the function declarations in hash.h could benefit from >>> gcc's warn_unused_result attribute, so I'm adding it: >> >> Including one in hash.c itself: >> >> hash.c: In function `hash_delete': >> hash.c:1015: warning: ignoring return value of `hash_rehash', declared >> with attribute warn_unused_result >> >> We should fix this, and decide whether shrinking the hash table when >> deletion frees up a bucket is always possible, or else deal with memory >> allocation failure here, too. > > Additionally, it looks like hash_rehash has a memory leak - if new_table > is allocated, but we later fail to allocate new_entry, the function > returns immediately without reclaiming new_table. Which means that even > if an application is prepared to deal with a false return by trying other > means to reduce memory usage rather than just giving up with xalloc_die, > the leaked memory from the previous attempt will interfere.
Good catch. That is definitely a bug. Looks like I'll have to write a test for this module after all ;-)