On Mon, Aug 03, 2020 at 19:18:52 +0200, Ján Tomko wrote: > We have two variables tracking the size of the map: > map_len and mem_alloc. > > Remove mem_alloc as well as code keeping them in sync. > > Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx> > Fixes: 917426c8d7dd26f13142fc4c5c1a8a19137ac647 > --- > src/util/virbitmap.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c > index 60fd8491dd..4c205016ff 100644 > --- a/src/util/virbitmap.c > +++ b/src/util/virbitmap.c [...] > @@ -197,13 +195,12 @@ virBitmapExpand(virBitmapPtr map, > > /* resize the memory if necessary */ > if (map->map_len < new_len) { > - if (VIR_RESIZE_N(map->map, map->map_alloc, map->map_len, > + if (VIR_RESIZE_N(map->map, map->map_len, map->map_len, > new_len - map->map_len) < 0) > return -1; * VIR_RESIZE_N: * @ptr: pointer to hold address of allocated memory * @alloc: variable tracking number of elements currently allocated * @count: number of elements currently in use * @add: minimum number of elements to additionally support * * Blindly using VIR_EXPAND_N(array, alloc, 1) in a loop scales * quadratically, because every iteration must copy contents from * all prior iterations. But amortized linear scaling can be achieved * by tracking allocation size separately from the number of used * elements, and growing geometrically only as needed. * * If 'count' + 'add' is larger than 'alloc', then geometrically reallocate * the array of 'alloc' elements, each sizeof(*ptr) bytes long, and store * the address of allocated memory in 'ptr' and the new size in 'alloc'. * The new elements are filled with zero.