[Mesa-dev] [PATCH 09/11] mesa: add null checks in symbol_table.c
Ian Romanick
idr at freedesktop.org
Fri Apr 4 13:24:40 PDT 2014
On 04/04/2014 03:28 AM, Juha-Pekka Heikkila wrote:
> 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__);
> + }
Previously, in a different patch, Matt (I think) I suggested using the idiom
if (!scope) {
_mesa_error_no_memory(__FUNCTION__);
return;
}
and leaving the rest of the code alone. I agree.
> }
>
>
> @@ -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);
Doesn't the strdup also need a NULL check?
>
> 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));
> +
Extra blank line here.
> + 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;
>
More information about the mesa-dev
mailing list