Mesa (master): glsl: check _mesa_hash_table_create return value in link_uniform_blocks

Ville Syrjala vsyrjala at kemper.freedesktop.org
Thu Jun 26 12:47:13 UTC 2014


Module: Mesa
Branch: master
Commit: 088da3720f12579c14b1f0edd6e6df6ff8b74571
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=088da3720f12579c14b1f0edd6e6df6ff8b74571

Author: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
Date:   Thu Apr  3 17:06:42 2014 +0300

glsl: check _mesa_hash_table_create return value in link_uniform_blocks

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/glsl/link_uniform_blocks.cpp |    6 ++++++
 src/glsl/linker.cpp              |    2 ++
 2 files changed, 8 insertions(+)

diff --git a/src/glsl/link_uniform_blocks.cpp b/src/glsl/link_uniform_blocks.cpp
index 1a0e643..53a18c9 100644
--- a/src/glsl/link_uniform_blocks.cpp
+++ b/src/glsl/link_uniform_blocks.cpp
@@ -170,6 +170,12 @@ link_uniform_blocks(void *mem_ctx,
    struct hash_table *block_hash =
       _mesa_hash_table_create(mem_ctx, _mesa_key_string_equal);
 
+   if (block_hash == NULL) {
+      _mesa_error_no_memory(__func__);
+      linker_error(prog, "out of memory\n");
+      return 0;
+   }
+
    /* Determine which uniform blocks are active.
     */
    link_uniform_block_active_visitor v(mem_ctx, block_hash, prog);
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index 0b6a716..247c828 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -1479,6 +1479,8 @@ link_intrastage_shaders(void *mem_ctx,
    const unsigned num_uniform_blocks =
       link_uniform_blocks(mem_ctx, prog, shader_list, num_shaders,
                           &uniform_blocks);
+   if (!prog->LinkStatus)
+      return NULL;
 
    /* Check that there is only a single definition of each function signature
     * across all shaders.




More information about the mesa-commit mailing list