[PATCH v2 1/1] windowscodecs: Fix non-zero alpha detection in ImagingFactory_CreateBitmapFromHICON.

Jinoh Kang wine at gitlab.winehq.org
Tue Jun 28 10:13:27 CDT 2022


From: Jinoh Kang <jinoh.kang.kr at gmail.com>

Increment pixel pointer for every *pixel*, not every *stride*.

Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
---
 dlls/windowscodecs/imgfactory.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/dlls/windowscodecs/imgfactory.c b/dlls/windowscodecs/imgfactory.c
index c7e101e3d62..07f5b53fefd 100644
--- a/dlls/windowscodecs/imgfactory.c
+++ b/dlls/windowscodecs/imgfactory.c
@@ -901,16 +901,14 @@ static HRESULT WINAPI ImagingFactory_CreateBitmapFromHICON(IWICImagingFactory2 *
         if (bm.bmBitsPixel == 32)
         {
             /* If any pixel has a non-zero alpha, ignore hbmMask */
-            bits = (DWORD *)buffer;
-            for (x = 0; x < width && !has_alpha; x++, bits++)
+            DWORD *ptr = (DWORD *)buffer;
+            DWORD *end = ptr + width * height;
+            while (ptr != end)
             {
-                for (y = 0; y < height; y++)
+                if (*ptr++ & 0xff000000)
                 {
-                    if (*bits & 0xff000000)
-                    {
-                        has_alpha = TRUE;
-                        break;
-                    }
+                    has_alpha = TRUE;
+                    break;
                 }
             }
         }
-- 
GitLab

https://gitlab.winehq.org/wine/wine/-/merge_requests/315



More information about the wine-devel mailing list