summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2018-03-23 15:43:58 +0100
committerNicolai Hähnle <[email protected]>2018-04-20 09:21:23 +0200
commit68ee1d57962c81172841459f5eaeefbe5506425e (patch)
tree576d82a7aba489e0ad15feb941a7bcf78ac69442
parent354b12681bc01d967849e05fae2677a3e1c5ca3a (diff)
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 <[email protected]>
-rw-r--r--src/compiler/glsl_types.cpp6
1 files 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];