[PATCH 4/5] wined3d: Allocate memory for formats in wined3d_adapter_init_format_info().

Józef Kucia jkucia at codeweavers.com
Thu Sep 20 02:02:01 CDT 2018


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/wined3d/utils.c | 42 +++++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 9627b13e8e9a..bf32953032ea 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -1994,23 +1994,15 @@ static enum wined3d_channel_type map_channel_type(char t)
     }
 }
 
-static BOOL init_format_base_info(struct wined3d_adapter *adapter, size_t format_size)
+static BOOL init_format_base_info(struct wined3d_adapter *adapter)
 {
     struct wined3d_format *format;
     unsigned int i, j;
 
-    adapter->format_size = format_size;
-    if (!(adapter->formats = heap_calloc(WINED3D_FORMAT_COUNT
-            + ARRAY_SIZE(typeless_depth_stencil_formats), adapter->format_size)))
-    {
-        ERR("Failed to allocate memory.\n");
-        return FALSE;
-    }
-
     for (i = 0; i < ARRAY_SIZE(formats); ++i)
     {
         if (!(format = get_format_internal(adapter, formats[i].id)))
-            goto fail;
+            return FALSE;
 
         format->id = formats[i].id;
         format->red_size = formats[i].red_size;
@@ -2036,10 +2028,10 @@ static BOOL init_format_base_info(struct wined3d_adapter *adapter, size_t format
         DWORD flags = 0;
 
         if (!(format = get_format_internal(adapter, typed_formats[i].id)))
-            goto fail;
+            return FALSE;
 
         if (!(typeless_format = get_format_internal(adapter, typed_formats[i].typeless_id)))
-            goto fail;
+            return FALSE;
 
         format->id = typed_formats[i].id;
         format->red_size = typeless_format->red_size;
@@ -2087,7 +2079,7 @@ static BOOL init_format_base_info(struct wined3d_adapter *adapter, size_t format
     for (i = 0; i < ARRAY_SIZE(ddi_formats); ++i)
     {
         if (!(format = get_format_internal(adapter, ddi_formats[i].id)))
-            goto fail;
+            return FALSE;
 
         format->ddi_format = ddi_formats[i].ddi_format;
     }
@@ -2095,16 +2087,12 @@ static BOOL init_format_base_info(struct wined3d_adapter *adapter, size_t format
     for (i = 0; i < ARRAY_SIZE(format_base_flags); ++i)
     {
         if (!(format = get_format_internal(adapter, format_base_flags[i].id)))
-            goto fail;
+            return FALSE;
 
         format_set_flag(format, format_base_flags[i].flags);
     }
 
     return TRUE;
-
-fail:
-    heap_free(adapter->formats);
-    return FALSE;
 }
 
 static BOOL init_format_block_info(struct wined3d_adapter *adapter)
@@ -3951,9 +3939,21 @@ static void init_format_depth_bias_scale(struct wined3d_adapter *adapter,
 
 BOOL wined3d_adapter_init_format_info(struct wined3d_adapter *adapter, size_t format_size)
 {
-    if (!init_format_base_info(adapter, format_size)) return FALSE;
-    if (!init_format_block_info(adapter)) goto fail;
-    if (!init_format_decompress_info(adapter)) goto fail;
+    unsigned int count = WINED3D_FORMAT_COUNT + ARRAY_SIZE(typeless_depth_stencil_formats);
+
+    if (!(adapter->formats = heap_calloc(count, format_size)))
+    {
+        ERR("Failed to allocate memory.\n");
+        return FALSE;
+    }
+    adapter->format_size = format_size;
+
+    if (!init_format_base_info(adapter))
+        goto fail;
+    if (!init_format_block_info(adapter))
+        goto fail;
+    if (!init_format_decompress_info(adapter))
+        goto fail;
 
     return TRUE;
 
-- 
2.16.4




More information about the wine-devel mailing list