From: Gert Wollny Date: Tue, 4 Sep 2018 07:36:53 +0000 (+0200) Subject: winsys/virgl/vtest: Correct off-by-one error in resource allocation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=218ff0d5105fe5d8d77e890d213de972980bd510;p=mesa.git winsys/virgl/vtest: Correct off-by-one error in resource allocation The resource bo array must already extended when the target index is equal to the current size of the array. Signed-off-by: Gert Wollny --- diff --git a/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c b/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c index 9a96c6eb83f..6c03a6b3594 100644 --- a/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c +++ b/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c @@ -459,13 +459,18 @@ static void virgl_vtest_add_res(struct virgl_vtest_winsys *vtws, { unsigned hash = res->res_handle & (sizeof(cbuf->is_handle_added)-1); - if (cbuf->cres > cbuf->nres) { - cbuf->nres += 256; - cbuf->res_bo = realloc(cbuf->res_bo, cbuf->nres * sizeof(struct virgl_hw_buf*)); - if (!cbuf->res_bo) { + if (cbuf->cres >= cbuf->nres) { + unsigned new_nres = cbuf->nres + 256; + struct virgl_hw_res **new_re_bo = REALLOC(cbuf->res_bo, + cbuf->nres * sizeof(struct virgl_hw_buf*), + new_nres * sizeof(struct virgl_hw_buf*)); + if (!new_re_bo) { fprintf(stderr,"failure to add relocation %d, %d\n", cbuf->cres, cbuf->nres); return; } + + cbuf->res_bo = new_re_bo; + cbuf->nres = new_nres; } cbuf->res_bo[cbuf->cres] = NULL;