From: Nicolai Hähnle <nicolai.haeh...@amd.com> We're not very good at handling out-of-memory conditions in general, but this change at least gives the caller the option of handling it.
This happens to fix an error in out-of-memory handling in i965, which has the following code in brw_bufmgr.c: node = util_dynarray_grow(vma_list, sizeof(struct vma_bucket_node)); if (unlikely(!node)) return 0ull; Previously, allocation failure for util_dynarray_grow wouldn't actually return NULL when the dynarray was previously non-empty. --- src/util/u_dynarray.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/util/u_dynarray.h b/src/util/u_dynarray.h index b30fd7b1154..f6a81609dbe 100644 --- a/src/util/u_dynarray.h +++ b/src/util/u_dynarray.h @@ -85,20 +85,22 @@ util_dynarray_ensure_cap(struct util_dynarray *buf, unsigned newcap) buf->capacity = DYN_ARRAY_INITIAL_SIZE; while (newcap > buf->capacity) buf->capacity *= 2; if (buf->mem_ctx) { buf->data = reralloc_size(buf->mem_ctx, buf->data, buf->capacity); } else { buf->data = realloc(buf->data, buf->capacity); } + if (!buf->data) + return 0; } return (void *)((char *)buf->data + buf->size); } static inline void * util_dynarray_grow_cap(struct util_dynarray *buf, int diff) { return util_dynarray_ensure_cap(buf, buf->size + diff); } -- 2.20.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev