vulkan/wsi: Fix resource leak in success path of wsi_queue_init()
[mesa.git] / src / util / vk_alloc.h
index a8e21cade11751f2867b9671a3a662b44486b2f2..2915021826903391b777f9f061893f0840b3e64d 100644 (file)
@@ -25,6 +25,7 @@
 
 /* common allocation inlines for vulkan drivers */
 
+#include <string.h>
 #include <vulkan/vulkan.h>
 
 static inline void *
@@ -46,6 +47,9 @@ vk_realloc(const VkAllocationCallbacks *alloc,
 static inline void
 vk_free(const VkAllocationCallbacks *alloc, void *data)
 {
+   if (data == NULL)
+      return;
+
    alloc->pfnFree(alloc->pUserData, data);
 }
 
@@ -61,6 +65,21 @@ vk_alloc2(const VkAllocationCallbacks *parent_alloc,
       return vk_alloc(parent_alloc, size, align, scope);
 }
 
+static inline void *
+vk_zalloc2(const VkAllocationCallbacks *parent_alloc,
+           const VkAllocationCallbacks *alloc,
+           size_t size, size_t align,
+           VkSystemAllocationScope scope)
+{
+   void *mem = vk_alloc2(parent_alloc, alloc, size, align, scope);
+   if (mem == NULL)
+      return NULL;
+
+   memset(mem, 0, size);
+
+   return mem;
+}
+
 static inline void
 vk_free2(const VkAllocationCallbacks *parent_alloc,
          const VkAllocationCallbacks *alloc,