+
+ i = entry - h->entries;
+ for (;;)
+ {
+ unsigned r;
+ ptrdiff_t j = i;
+
+ do
+ {
+ if (--i < 0)
+ i = h->size - 1;
+ if (h->entries[i] == NULL)
+ return 1;
+
+ r = h->hash (h->entries[i], h->aux) & (h->size - 1);
+ }
+ while ((i <= r && r < j) || (r < j && j < i) || (j < i && i <= r));
+ h->entries[i] = h->entries[j];
+ }