diff --git a/hashset.c b/hashset.c index d60ccc8..93c8d8c 100644 --- a/hashset.c +++ b/hashset.c @@ -80,6 +80,15 @@ hashset_allocate(int maxelements) hashset_t *set; char *ptr; + /* + * Ensure that maxelements is not divisible by 13; + * i.e. the step size used in hashset_add_element() + * and hashset_contains_element(). + */ + while (maxelements % 13 == 0) { + maxelements++; + } + len = offsetof(hashset_t, data); len += (maxelements + 7) / 8; len += maxelements * sizeof(int32); @@ -387,8 +396,6 @@ hashset_contains_element(hashset_t *set, int32 value) /* move to the next element */ hash = (hash + 13) % set->maxelements; } - - return set; } Datum