for (fclass = 2; fclass < SB_FULLNESS_CLASSES - 1; ++fclass)
if (sb_transfer_first_span(base, heap, fclass, 1))
break;
- if (relptr_is_null(heap->spans[1]))
- if (!sb_transfer_first_span(base, heap, 0, 1))
+ if (relptr_is_null(heap->spans[1]) &&
+ !sb_transfer_first_span(base, heap, 0, 1))
return NULL;
}
newsize = leaf->nallocated == 0 ? 16 : leaf->nallocated * 2;
newtab = malloc(sizeof(sb_region *) * newsize);
+ leaf->nallocated = newsize;
if (newtab == NULL)
return false;
if (leaf->nused > 0)
Assert(low == leaf->nused ||
leaf->region[low]->region_start > region->region_start);
if (low < leaf->nused)
- memmove(&leaf->region[low], &leaf->region[low + 1],
- sizeof(sb_region *) * (leaf->nused - low - 1));
+ memmove(&leaf->region[low + 1], &leaf->region[low],
+ sizeof(sb_region *) * (leaf->nused - low));
leaf->region[low] = region;
++leaf->nused;
}
{
Assert(leaf->region[low] == region);
if (low < leaf->nused - 1)
- memmove(&leaf->region[low + 1], &leaf->region[low],
+ memmove(&leaf->region[low], &leaf->region[low + 1],
sizeof(sb_region *) * (leaf->nused - low - 1));
--leaf->nused;
}
{
if (lookup_root.cache_value[i] == NULL)
unused = i;
- else if (lookup_root.cache_key[i] == highbits)
+ else if (lookup_root.cache_key[i] == rootbits)
l2 = lookup_root.cache_value[i];
}
return NULL;
if (unused != -1)
{
- lookup_root.cache_key[unused] = highbits;
+ lookup_root.cache_key[unused] = rootbits;
lookup_root.cache_value[unused] = l2;
}
else if (lookup_root.l2 != NULL)
/* Find slot for entry, and try to initialize it if needed. */
leafptr = &l2->leaf[highbits & (SB_LOOKUP_L2_ENTRIES - 1)];
- if (insert || *leafptr == NULL)
+ if (insert && *leafptr == NULL)
*leafptr = calloc(1, sizeof(sb_lookup_leaf));
return *leafptr;