struct ihash_table *tbl;
/* Pick a power of 2 that can hold the requested size. */
- if (size & (size-1)) {
+ if (size & (size-1) || size < 16) {
int req = size;
- size = 32;
+ size = 16;
while (size < req)
size *= 2;
}
static void expand_ihash(struct ihash_table *tbl)
{
- struct idev_node *old_buckets;
+ struct idev_node *old_buckets = tbl->buckets;
int size = tbl->size * 2;
int i;
- old_buckets = tbl->buckets;
if (!(tbl->buckets = new_array(struct idev_node, size)))
out_of_memory("ihash_create");
- memset(tbl->buckets, 0, size * sizeof tbl->buckets[0]);
+ memset(tbl->buckets, 0, size * sizeof (struct idev_node));
tbl->size = size;
tbl->entries = 0;
{
struct file_struct *f1 = FPTR(*int1);
struct file_struct *f2 = FPTR(*int2);
- int gnum1 = F_HL_GNUM(f1);
- int gnum2 = F_HL_GNUM(f2);
+ int32 gnum1 = F_HL_GNUM(f1);
+ int32 gnum2 = F_HL_GNUM(f2);
if (gnum1 != gnum2)
return gnum1 > gnum2 ? 1 : -1;
{
int32 from, prev;
struct file_struct *file, *file_next;
- int gnum, gnum_next;
+ int32 gnum, gnum_next;
qsort(ndx_list, ndx_count, sizeof ndx_list[0],
(int (*)()) hlink_compare_gnum);