From 72fa3372cc0c63ca5158276afbb2ddba5a4f88d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 30 Sep 2020 13:44:52 -0400 Subject: [PATCH] util/idalloc: resize if ID is too large for reservation Reviewed-by: Ian Romanick Part-of: --- src/util/u_idalloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/util/u_idalloc.c b/src/util/u_idalloc.c index b5d886d200a..9255faa8de2 100644 --- a/src/util/u_idalloc.c +++ b/src/util/u_idalloc.c @@ -103,7 +103,8 @@ util_idalloc_free(struct util_idalloc *buf, unsigned id) void util_idalloc_reserve(struct util_idalloc *buf, unsigned id) { - assert(id < buf->num_elements); + if (id >= buf->num_elements) + util_idalloc_resize(buf, id * 2); assert((buf->data[id / 32] & (1u << (id % 32))) == 0); buf->data[id / 32] |= 1u << (id % 32); }