From 68ee1d57962c81172841459f5eaeefbe5506425e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolai=20H=C3=A4hnle?= Date: Fri, 23 Mar 2018 15:43:58 +0100 Subject: [PATCH] glsl: prevent spurious Valgrind errors when serializing NIR It looks as if the structure fields array is fully initialized below, but in fact at least gcc in debug builds will not actually overwrite the unused bits of bit fields. Reviewed-by: Timothy Arceri --- src/compiler/glsl_types.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp index 11947c917a2..d11c365e191 100644 --- a/src/compiler/glsl_types.cpp +++ b/src/compiler/glsl_types.cpp @@ -105,8 +105,10 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); - this->fields.structure = ralloc_array(this->mem_ctx, - glsl_struct_field, length); + /* Zero-fill to prevent spurious Valgrind errors when serializing NIR + * due to uninitialized unused bits in bit fields. */ + this->fields.structure = rzalloc_array(this->mem_ctx, + glsl_struct_field, length); for (i = 0; i < length; i++) { this->fields.structure[i] = fields[i]; -- 2.30.2