[Mesa-dev] [PATCH 14/14] mesa: add null checks in symbol_table.c

Juha-Pekka Heikkila juhapekka.heikkila at gmail.com
Tue Mar 25 05:40:55 PDT 2014


Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
 src/mesa/program/symbol_table.c | 33 ++++++++++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/mesa/program/symbol_table.c b/src/mesa/program/symbol_table.c
index 9462978..9c3556a 100644
--- a/src/mesa/program/symbol_table.c
+++ b/src/mesa/program/symbol_table.c
@@ -172,9 +172,14 @@ _mesa_symbol_table_push_scope(struct _mesa_symbol_table *table)
 {
     struct scope_level *const scope = calloc(1, sizeof(*scope));
     
-    scope->next = table->current_scope;
-    table->current_scope = scope;
-    table->depth++;
+    if (scope) {
+       scope->next = table->current_scope;
+       table->current_scope = scope;
+       table->depth++;
+    }
+    else {
+       _mesa_error_no_memory(__FUNCTION__);
+    }
 }
 
 
@@ -254,6 +259,12 @@ _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table,
 
     if (hdr == NULL) {
        hdr = calloc(1, sizeof(*hdr));
+
+       if (hdr == NULL) {
+          _mesa_error_no_memory(__FUNCTION__);
+          return -1;
+       }
+
        hdr->name = strdup(name);
 
        hash_table_insert(table->ht, hdr, hdr->name);
@@ -276,6 +287,12 @@ _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table,
        return -1;
 
     sym = calloc(1, sizeof(*sym));
+
+    if (sym == NULL) {
+       _mesa_error_no_memory(__FUNCTION__);
+       return -1;
+    }
+
     sym->next_with_same_name = hdr->symbols;
     sym->next_with_same_scope = table->current_scope->symbols;
     sym->hdr = hdr;
@@ -311,6 +328,11 @@ _mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table *table,
 
     if (hdr == NULL) {
         hdr = calloc(1, sizeof(*hdr));
+        if (hdr == NULL) {
+           _mesa_error_no_memory(__FUNCTION__);
+           return -1;
+        }
+
         hdr->name = strdup(name);
 
         hash_table_insert(table->ht, hdr, hdr->name);
@@ -340,6 +362,11 @@ _mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table *table,
     }
 
     sym = calloc(1, sizeof(*sym));
+    if (sym == NULL) {
+       _mesa_error_no_memory(__FUNCTION__);
+       return -1;
+    }
+
     sym->next_with_same_scope = top_scope->symbols;
     sym->hdr = hdr;
     sym->name_space = name_space;
-- 
1.8.1.2



More information about the mesa-dev mailing list