libdrm: reduce number of reallocations in drmModeAtomicAddProperty
am: c5371788ed
Change-Id: I3815cd86f4bdc41b5c7553e9ca237d8cc8cfd88f
diff --git a/xf86drmMode.c b/xf86drmMode.c
index 9a15b5e..b0ec609 100644
--- a/xf86drmMode.c
+++ b/xf86drmMode.c
@@ -1250,7 +1250,7 @@
return NULL;
}
memcpy(new->items, old->items,
- old->size_items * sizeof(*new->items));
+ old->cursor * sizeof(*new->items));
} else {
new->items = NULL;
}
@@ -1312,12 +1312,13 @@
return -EINVAL;
if (req->cursor >= req->size_items) {
+ const uint32_t item_size_inc = getpagesize() / sizeof(*req->items);
drmModeAtomicReqItemPtr new;
- req->size_items += 16;
+ req->size_items += item_size_inc;
new = realloc(req->items, req->size_items * sizeof(*req->items));
if (!new) {
- req->size_items -= 16;
+ req->size_items -= item_size_inc;
return -ENOMEM;
}
req->items = new;