From 3730128e33fc2959c756cfbb07df195aad2ac71f Mon Sep 17 00:00:00 2001 From: Dimitriy Ryazantcev Date: Thu, 1 May 2025 18:32:12 +0300 Subject: [PATCH] Simplify WIN_CreateHCursor (#12933) --- src/video/windows/SDL_windowsmouse.c | 37 +++++++++++----------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index 3d6bcc4297..4d6b0a26b4 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -205,39 +205,30 @@ static HBITMAP CreateMaskBitmap(SDL_Surface *surface, bool is_monochrome) static HCURSOR WIN_CreateHCursor(SDL_Surface *surface, int hot_x, int hot_y) { - HCURSOR hcursor; - ICONINFO ii; + HCURSOR hcursor = NULL; bool is_monochrome = IsMonochromeSurface(surface); - - SDL_zero(ii); - ii.fIcon = FALSE; - ii.xHotspot = (DWORD)hot_x; - ii.yHotspot = (DWORD)hot_y; - ii.hbmMask = CreateMaskBitmap(surface, is_monochrome); - ii.hbmColor = is_monochrome ? NULL : CreateColorBitmap(surface); + ICONINFO ii = { + .fIcon = FALSE, + .xHotspot = (DWORD)hot_x, + .yHotspot = (DWORD)hot_y, + .hbmMask = CreateMaskBitmap(surface, is_monochrome), + .hbmColor = is_monochrome ? NULL : CreateColorBitmap(surface) + }; if (!ii.hbmMask || (!is_monochrome && !ii.hbmColor)) { SDL_SetError("Couldn't create cursor bitmaps"); - if (ii.hbmMask) { - DeleteObject(ii.hbmMask); - } - if (ii.hbmColor) { - DeleteObject(ii.hbmColor); - } - return NULL; + goto cleanup; } hcursor = CreateIconIndirect(&ii); if (!hcursor) { - WIN_SetError("CreateIconIndirect()"); - DeleteObject(ii.hbmMask); - if (ii.hbmColor) { - DeleteObject(ii.hbmColor); - } - return NULL; + WIN_SetError("CreateIconIndirect failed"); } - DeleteObject(ii.hbmMask); +cleanup: + if (ii.hbmMask) { + DeleteObject(ii.hbmMask); + } if (ii.hbmColor) { DeleteObject(ii.hbmColor); }