[Mesa-dev] [PATCH 1/7] glsl: Fix reading of uninitialized memory
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Tue Jun 14 14:59:00 UTC 2016
Switch to use memory allocations which zero memory for places
where needed.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
src/compiler/glsl/ast_to_hir.cpp | 2 +-
src/compiler/glsl/glcpp/glcpp-parse.y | 4 ++--
src/compiler/glsl/link_uniform_blocks.cpp | 2 +-
src/compiler/glsl_types.cpp | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index b7192b2..4fb2809 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -6518,7 +6518,7 @@ ast_process_struct_or_iface_block_members(exec_list *instructions,
* the types to HIR. This ensures that structure definitions embedded in
* other structure definitions or in interface blocks are processed.
*/
- glsl_struct_field *const fields = ralloc_array(state, glsl_struct_field,
+ glsl_struct_field *const fields = rzalloc_array(state, glsl_struct_field,
decl_count);
bool first_member = true;
diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y b/src/compiler/glsl/glcpp/glcpp-parse.y
index 2cfa6a6..b3565b5 100644
--- a/src/compiler/glsl/glcpp/glcpp-parse.y
+++ b/src/compiler/glsl/glcpp/glcpp-parse.y
@@ -1315,7 +1315,7 @@ glcpp_parser_create(const struct gl_extensions *extensions, gl_api api)
{
glcpp_parser_t *parser;
- parser = ralloc (NULL, glcpp_parser_t);
+ parser = rzalloc (NULL, glcpp_parser_t);
glcpp_lex_init_extra (parser, &parser->scanner);
parser->defines = hash_table_ctor(32, hash_table_string_hash,
@@ -1855,7 +1855,7 @@ _parser_active_list_push(glcpp_parser_t *parser, const char *identifier,
{
active_list_t *node;
- node = ralloc(parser->active, active_list_t);
+ node = rzalloc(parser->active, active_list_t);
node->identifier = ralloc_strdup(node, identifier);
node->marker = marker;
node->next = parser->active;
diff --git a/src/compiler/glsl/link_uniform_blocks.cpp b/src/compiler/glsl/link_uniform_blocks.cpp
index b816dab..0a0c886 100644
--- a/src/compiler/glsl/link_uniform_blocks.cpp
+++ b/src/compiler/glsl/link_uniform_blocks.cpp
@@ -315,7 +315,7 @@ create_buffer_blocks(void *mem_ctx, struct gl_context *ctx,
/* Allocate storage to hold all of the information related to uniform
* blocks that can be queried through the API.
*/
- struct gl_uniform_block *blocks = ralloc_array(mem_ctx, gl_uniform_block, num_blocks);
+ struct gl_uniform_block *blocks = rzalloc_array(mem_ctx, gl_uniform_block, num_blocks);
gl_uniform_buffer_variable *variables =
ralloc_array(blocks, gl_uniform_buffer_variable, num_variables);
diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp
index 11f1e85..613c449 100644
--- a/src/compiler/glsl_types.cpp
+++ b/src/compiler/glsl_types.cpp
@@ -157,7 +157,7 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields,
init_ralloc_type_ctx();
assert(name != NULL);
this->name = ralloc_strdup(this->mem_ctx, name);
- this->fields.structure = ralloc_array(this->mem_ctx,
+ this->fields.structure = rzalloc_array(this->mem_ctx,
glsl_struct_field, length);
for (i = 0; i < length; i++) {
this->fields.structure[i].type = fields[i].type;
--
1.9.1
More information about the mesa-dev
mailing list