[PATCH] wincodecs: Remove some of error handling duplication in InitializePredefined()

Nikolay Sivov nsivov at codeweavers.com
Thu Dec 8 05:15:20 CST 2016


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/windowscodecs/palette.c | 56 +++++++++++++++++++++++++++-----------------
 1 file changed, 35 insertions(+), 21 deletions(-)

diff --git a/dlls/windowscodecs/palette.c b/dlls/windowscodecs/palette.c
index 89ec9ea..43f78ff 100644
--- a/dlls/windowscodecs/palette.c
+++ b/dlls/windowscodecs/palette.c
@@ -98,6 +98,36 @@ static ULONG WINAPI PaletteImpl_Release(IWICPalette *iface)
     return ref;
 }
 
+static WICColor *generate_bw_palette(UINT *count)
+{
+    WICColor *entries;
+
+    *count = 2;
+    entries = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(WICColor));
+    if (!entries) return NULL;
+
+    entries[0] = 0xff000000;
+    entries[1] = 0xffffffff;
+
+    return entries;
+}
+
+static WICColor *generate_gray4_palette(UINT *count)
+{
+    WICColor *entries;
+
+    *count = 4;
+    entries = HeapAlloc(GetProcessHeap(), 0, 4 * sizeof(WICColor));
+    if (!entries) return NULL;
+
+    entries[0] = 0xff000000;
+    entries[1] = 0xff555555;
+    entries[2] = 0xffaaaaaa;
+    entries[3] = 0xffffffff;
+
+    return entries;
+}
+
 static WICColor *generate_gray16_palette(UINT *count)
 {
     WICColor *entries;
@@ -339,66 +369,47 @@ static HRESULT WINAPI PaletteImpl_InitializePredefined(IWICPalette *iface,
     switch (type)
     {
     case WICBitmapPaletteTypeFixedBW:
-        count = 2;
-        colors = HeapAlloc(GetProcessHeap(), 0, count * sizeof(WICColor));
-        if (!colors) return E_OUTOFMEMORY;
-        colors[0] = 0xff000000;
-        colors[1] = 0xffffffff;
+        colors = generate_bw_palette(&count);
         break;
 
     case WICBitmapPaletteTypeFixedGray4:
-        count = 4;
-        colors = HeapAlloc(GetProcessHeap(), 0, count * sizeof(WICColor));
-        if (!colors) return E_OUTOFMEMORY;
-        colors[0] = 0xff000000;
-        colors[1] = 0xff555555;
-        colors[2] = 0xffaaaaaa;
-        colors[3] = 0xffffffff;
+        colors = generate_gray4_palette(&count);
         break;
 
     case WICBitmapPaletteTypeFixedGray16:
         colors = generate_gray16_palette(&count);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedGray256:
         colors = generate_gray256_palette(&count);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedHalftone8:
         colors = generate_halftone8_palette(&count, add_transparent);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedHalftone27:
         colors = generate_halftone27_palette(&count, add_transparent);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedHalftone64:
         colors = generate_halftone64_palette(&count, add_transparent);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedHalftone125:
         colors = generate_halftone125_palette(&count, add_transparent);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedHalftone216:
         colors = generate_halftone216_palette(&count, add_transparent);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedHalftone252:
         colors = generate_halftone252_palette(&count, add_transparent);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     case WICBitmapPaletteTypeFixedHalftone256:
         colors = generate_halftone256_palette(&count, add_transparent);
-        if (!colors) return E_OUTOFMEMORY;
         break;
 
     default:
@@ -406,6 +417,9 @@ static HRESULT WINAPI PaletteImpl_InitializePredefined(IWICPalette *iface,
         return E_INVALIDARG;
     }
 
+    if (!colors)
+        return E_OUTOFMEMORY;
+
     EnterCriticalSection(&This->lock);
     HeapFree(GetProcessHeap(), 0, This->colors);
     This->colors = colors;
-- 
2.10.2




More information about the wine-patches mailing list