Propagate OOM in more places
authorCharles Giessen <charles@lunarg.com>
Mon, 29 May 2023 21:03:59 +0000 (15:03 -0600)
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>
Mon, 29 May 2023 23:45:08 +0000 (17:45 -0600)
loader/debug_utils.c
loader/debug_utils.h
loader/loader.c

index ac2d8c9..bdd6331 100644 (file)
@@ -565,8 +565,8 @@ void destroy_debug_callbacks_chain(struct loader_instance *inst, const VkAllocat
     inst->DbgFunctionHead = NULL;
 }
 
-void add_debug_extensions_to_ext_list(const struct loader_instance *inst, struct loader_extension_list *ext_list) {
-    loader_add_to_ext_list(inst, ext_list, sizeof(debug_utils_extension_info) / sizeof(VkExtensionProperties),
+VkResult add_debug_extensions_to_ext_list(const struct loader_instance *inst, struct loader_extension_list *ext_list) {
+    return loader_add_to_ext_list(inst, ext_list, sizeof(debug_utils_extension_info) / sizeof(VkExtensionProperties),
                            debug_utils_extension_info);
 }
 
index dec1108..9472ef9 100644 (file)
@@ -28,7 +28,7 @@
 
 // General utilities
 
-void add_debug_extensions_to_ext_list(const struct loader_instance *inst, struct loader_extension_list *ext_list);
+VkResult add_debug_extensions_to_ext_list(const struct loader_instance *inst, struct loader_extension_list *ext_list);
 void check_for_enabled_debug_extensions(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
 bool debug_extensions_InstanceGpa(struct loader_instance *ptr_instance, const char *name, void **addr);
 bool debug_utils_ReportFlagsToAnnotFlags(VkDebugReportFlagsEXT dr_flags, bool default_flag_is_spec,
index cf24caa..1d87c41 100644 (file)
@@ -1252,21 +1252,30 @@ VkResult loader_get_icd_loader_instance_extensions(const struct loader_instance
     };
 
     // Traverse loader's extensions, adding non-duplicate extensions to the list
-    add_debug_extensions_to_ext_list(inst, inst_exts);
-
+    res = add_debug_extensions_to_ext_list(inst, inst_exts);
+    if (res == VK_ERROR_OUT_OF_HOST_MEMORY) {
+        goto out;
+    }
     const VkExtensionProperties portability_enumeration_extension_info[] = {
         {VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME, VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION}};
 
     // Add VK_KHR_portability_subset
-    loader_add_to_ext_list(inst, inst_exts, sizeof(portability_enumeration_extension_info) / sizeof(VkExtensionProperties),
-                           portability_enumeration_extension_info);
+    res = loader_add_to_ext_list(inst, inst_exts, sizeof(portability_enumeration_extension_info) / sizeof(VkExtensionProperties),
+                                 portability_enumeration_extension_info);
+    if (res == VK_ERROR_OUT_OF_HOST_MEMORY) {
+        goto out;
+    }
 
     const VkExtensionProperties direct_driver_loading_extension_info[] = {
         {VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME, VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION}};
 
     // Add VK_LUNARG_direct_driver_loading
-    loader_add_to_ext_list(inst, inst_exts, sizeof(direct_driver_loading_extension_info) / sizeof(VkExtensionProperties),
-                           direct_driver_loading_extension_info);
+    res = loader_add_to_ext_list(inst, inst_exts, sizeof(direct_driver_loading_extension_info) / sizeof(VkExtensionProperties),
+                                 direct_driver_loading_extension_info);
+    if (res == VK_ERROR_OUT_OF_HOST_MEMORY) {
+        goto out;
+    }
+
 out:
     return res;
 }
@@ -2156,7 +2165,7 @@ bool update_meta_layer_extensions_from_component_layers(const struct loader_inst
     return res;
 }
 
-// Verify that all meta-layers in a layer list are valid.
+// Verify that all meta-layers in a layer verify_meta_layer_component_layerslist are valid.
 VkResult verify_all_meta_layers(struct loader_instance *inst, const struct loader_envvar_filter *enable_filter,
                                 const struct loader_envvar_disable_layers_filter *disable_filter,
                                 struct loader_layer_list *instance_layers, bool *override_layer_present) {