rem: hash_rehash (Hash_table *table, unsigned candidate)
add: hash_rehash (Hash_table *table, size_t candidate)
context: hash_rehash (Hash_table *table, unsigned candidate){  Hash_table *new_table;  struct hash_entry *bucket;  struct hash_entry *cursor;  struct hash_entry *next;  new_table = hash_initialize (candidate, table->tuning, table->hasher,			       table->comparator, table->data_freer);  if (new_table == NULL)    return false;  /* Merely reuse the extra old space into the new table.  */#if USE_OBSTACK  obstack_free (&new_table->entry_stack, NULL);  new_table->entry_stack = table->entry_stack;#endif  new_table->free_entry_list = table->free_entry_list;  for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)    if (bucket->data)      for (cursor = bucket; cursor; cursor = next)	{	  void *data = cursor->data;	  struct hash_entry *new_bucket	    = (new_table->bucket	       + new_table->hasher (data, new_table->n_buckets));	  assert (new_bucket < new_table->bucket_limit);	  next = cursor->next;	  if (new_bucket->data)	    {	      if (cursor == bucket)		{		  /* Allocate or recycle an entry, when moving from a bucket		     header into a bucket overflow.  */		  struct hash_entry *new_entry = allocate_entry (new_table);		  if (new_entry == NULL)		    return false;		  new_entry->data = data;		  new_entry->next = new_bucket->next;		  new_bucket->next = new_entry;		}	      else		{		  /* Merely relink an existing entry, when moving from a		     bucket overflow into a bucket overflow.  */		  cursor->next = new_bucket->next;		  new_bucket->next = cursor;		}	    }	  else	    {	      /* Free an existing entry, when moving from a bucket		 overflow into a bucket header.  Also take care of the		 simple case of moving from a bucket header into a bucket		 header.  */	      new_bucket->data = data;	      new_table->n_buckets_used++;	      if (cursor != bucket)		free_entry (new_table, cursor);	    }	}  free (table->bucket);  table->bucket = new_table->bucket;  table->bucket_limit = new_table->bucket_limit;  table->n_buckets = new_table->n_buckets;  table->n_buckets_used = new_table->n_buckets_used;  table->free_entry_list = new_table->free_entry_list;  /* table->n_entries already holds its value.  */#if USE_OBSTACK  table->entry_stack = new_table->entry_stack;#endif  free (new_table);  return true;}