https://git.reactos.org/?p=reactos.git;a=commitdiff;h=db416e3914271a96cdc84b0e82df0bff34ce52c7
commit db416e3914271a96cdc84b0e82df0bff34ce52c7 Author: Serge Gautherie <reactos-git_serge_171...@gautherie.fr> AuthorDate: Thu Nov 12 01:22:46 2020 +0100 Commit: George Bișoc <george.bi...@reactos.org> CommitDate: Sat Apr 24 20:35:48 2021 +0200 [REACTOS] InitImageList(): Fix error checks And simplify code a bit. --- base/applications/mscutils/servman/misc.c | 3 +-- dll/cpl/mmsys/sounds.c | 3 +-- modules/rosapps/applications/imagesoft/misc.c | 24 +++++++++++++++++++----- modules/rostests/winetests/GUI/misc.c | 5 +++-- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/base/applications/mscutils/servman/misc.c b/base/applications/mscutils/servman/misc.c index e41f3183e0e..d34fcfca9a1 100644 --- a/base/applications/mscutils/servman/misc.c +++ b/base/applications/mscutils/servman/misc.c @@ -247,8 +247,7 @@ InitImageList(UINT StartResource, LR_LOADTRANSPARENT); if (hImage == NULL) { - ImageList_Destroy(himl); - himl = NULL; + ret = -1; break; } diff --git a/dll/cpl/mmsys/sounds.c b/dll/cpl/mmsys/sounds.c index 89df8727728..b59814d92a1 100644 --- a/dll/cpl/mmsys/sounds.c +++ b/dll/cpl/mmsys/sounds.c @@ -1056,8 +1056,7 @@ InitImageList(UINT StartResource, LR_LOADTRANSPARENT); if (hImage == NULL) { - ImageList_Destroy(himl); - himl = NULL; + ret = -1; break; } diff --git a/modules/rosapps/applications/imagesoft/misc.c b/modules/rosapps/applications/imagesoft/misc.c index f71f95f6eb0..4b72006152f 100644 --- a/modules/rosapps/applications/imagesoft/misc.c +++ b/modules/rosapps/applications/imagesoft/misc.c @@ -374,11 +374,11 @@ ToolbarInsertSpaceForControl(HWND hWndToolbar, HIMAGELIST InitImageList(UINT NumImages, UINT StartResource) { + UINT EndResource = StartResource + NumImages - 1; HBITMAP hBitmap; HIMAGELIST hImageList; - UINT i, k; - INT Ret; - DBG_UNREFERENCED_LOCAL_VARIABLE(Ret); + UINT i; + INT Ret = 0; /* Create the toolbar icon image list */ hImageList = ImageList_Create(TB_BMP_WIDTH, @@ -386,11 +386,11 @@ InitImageList(UINT NumImages, UINT StartResource) ILC_MASK | ILC_COLOR24, NumImages, 0); - if (! hImageList) + if (hImageList == NULL) return NULL; /* Add all icons to the image list */ - for (i = StartResource, k = 0; k < NumImages; i++, k++) + for (i = StartResource; i <= EndResource; i++) { hBitmap = LoadImage(hInstance, MAKEINTRESOURCE(i), @@ -398,12 +398,26 @@ InitImageList(UINT NumImages, UINT StartResource) TB_BMP_WIDTH, TB_BMP_HEIGHT, LR_LOADTRANSPARENT); + if (hBitmap == NULL) + { + Ret = -1; + break; + } Ret = ImageList_AddMasked(hImageList, hBitmap, RGB(255, 255, 254)); DeleteObject(hBitmap); + + if (Ret == -1) + break; + } + + if (Ret == -1) + { + ImageList_Destroy(hImageList); + hImageList = NULL; } return hImageList; diff --git a/modules/rostests/winetests/GUI/misc.c b/modules/rostests/winetests/GUI/misc.c index 7830f277315..dfe436b7735 100644 --- a/modules/rostests/winetests/GUI/misc.c +++ b/modules/rostests/winetests/GUI/misc.c @@ -249,10 +249,11 @@ InitImageList(UINT StartResource, Ret = ImageList_AddIcon(hImageList, hIcon); - if (Ret == -1) - goto fail; DestroyIcon(hIcon); + + if (Ret == -1) + goto fail; } return hImageList;