mesa/main: avoid null access in format_array_table_init()
authorJuha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Fri, 20 Mar 2015 13:40:26 +0000 (15:40 +0200)
committerJuha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Thu, 11 Jun 2015 10:17:11 +0000 (13:17 +0300)
If _mesa_hash_table_create failed we'd get null pointer. Report
error and go away.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/main/formats.c

index 8af44e90520097bf25cb7d57653e2c45f8851a29..f7c94024f65938fa720edb67ebd207ecaeec51d7 100644 (file)
@@ -397,6 +397,11 @@ format_array_format_table_init(void)
    format_array_format_table = _mesa_hash_table_create(NULL, NULL,
                                                        array_formats_equal);
 
+   if (!format_array_format_table) {
+      _mesa_error_no_memory(__func__);
+      return;
+   }
+
    for (f = 1; f < MESA_FORMAT_COUNT; ++f) {
       info = _mesa_get_format_info(f);
       if (!info->ArrayFormat)
@@ -432,6 +437,11 @@ _mesa_format_from_array_format(uint32_t array_format)
 
    call_once(&format_array_format_table_exists, format_array_format_table_init);
 
+   if (!format_array_format_table) {
+      format_array_format_table_exists = ONCE_FLAG_INIT;
+      return MESA_FORMAT_NONE;
+   }
+
    entry = _mesa_hash_table_search_pre_hashed(format_array_format_table,
                                               array_format,
                                               (void *)(intptr_t)array_format);