Nikolay Sivov : comctl32/imagelist: Fail in ImageList_GetIconSize on null parameters.
Alexandre Julliard
julliard at winehq.org
Fri Aug 20 10:19:15 CDT 2010
Module: wine
Branch: master
Commit: 66c9a73db55103fd83718838c99c866121c7c6a7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=66c9a73db55103fd83718838c99c866121c7c6a7
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Thu Aug 19 10:18:16 2010 +0400
comctl32/imagelist: Fail in ImageList_GetIconSize on null parameters.
---
dlls/comctl32/imagelist.c | 8 +++-----
dlls/comctl32/tab.c | 8 +++++---
dlls/comctl32/tests/imagelist.c | 8 +++-----
dlls/comdlg32/fontdlg.c | 4 ++--
4 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index f0652e5..6fee577 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -1726,15 +1726,13 @@ ImageList_GetIcon (HIMAGELIST himl, INT i, UINT fStyle)
BOOL WINAPI
ImageList_GetIconSize (HIMAGELIST himl, INT *cx, INT *cy)
{
- if (!is_valid(himl))
+ if (!is_valid(himl) || !cx || !cy)
return FALSE;
if ((himl->cx <= 0) || (himl->cy <= 0))
return FALSE;
- if (cx)
- *cx = himl->cx;
- if (cy)
- *cy = himl->cy;
+ *cx = himl->cx;
+ *cy = himl->cy;
return TRUE;
}
diff --git a/dlls/comctl32/tab.c b/dlls/comctl32/tab.c
index 7057531..8807a11 100644
--- a/dlls/comctl32/tab.c
+++ b/dlls/comctl32/tab.c
@@ -1163,14 +1163,14 @@ static void TAB_SetItemBounds (TAB_INFO *infoPtr)
if (!(infoPtr->fHeightSet))
{
int item_height;
- int icon_height = 0;
+ INT icon_height = 0, cx;
/* Use the current font to determine the height of a tab. */
GetTextMetricsW(hdc, &fontMetrics);
/* Get the icon height */
if (infoPtr->himl)
- ImageList_GetIconSize(infoPtr->himl, 0, &icon_height);
+ ImageList_GetIconSize(infoPtr->himl, &cx, &icon_height);
/* Take the highest between font or icon */
if (fontMetrics.tmHeight > icon_height)
@@ -1195,7 +1195,9 @@ static void TAB_SetItemBounds (TAB_INFO *infoPtr)
/* Get the icon width */
if (infoPtr->himl)
{
- ImageList_GetIconSize(infoPtr->himl, &icon_width, 0);
+ INT cy;
+
+ ImageList_GetIconSize(infoPtr->himl, &icon_width, &cy);
if (infoPtr->dwStyle & TCS_FIXEDWIDTH)
icon_width += 4;
diff --git a/dlls/comctl32/tests/imagelist.c b/dlls/comctl32/tests/imagelist.c
index b6b509c..d4699bc 100644
--- a/dlls/comctl32/tests/imagelist.c
+++ b/dlls/comctl32/tests/imagelist.c
@@ -1734,21 +1734,19 @@ static void test_iconsize(void)
himl = ImageList_Create(16, 16, ILC_COLOR16, 0, 3);
/* null pointers, not zero imagelist dimensions */
ret = ImageList_GetIconSize(himl, NULL, NULL);
- todo_wine ok(!ret, "got %d\n", ret);
+ ok(!ret, "got %d\n", ret);
/* doesn't touch return pointers */
cx = 0xdeadbeef;
ret = ImageList_GetIconSize(himl, &cx, NULL);
-todo_wine {
ok(!ret, "got %d\n", ret);
ok(cx == 0xdeadbeef, "got %d\n", cx);
-}
+
cy = 0xdeadbeef;
ret = ImageList_GetIconSize(himl, NULL, &cy);
-todo_wine {
ok(!ret, "got %d\n", ret);
ok(cy == 0xdeadbeef, "got %d\n", cy);
-}
+
ImageList_Destroy(himl);
}
diff --git a/dlls/comdlg32/fontdlg.c b/dlls/comdlg32/fontdlg.c
index 6d3ee73..83400fc 100644
--- a/dlls/comdlg32/fontdlg.c
+++ b/dlls/comdlg32/fontdlg.c
@@ -772,12 +772,12 @@ static LRESULT CFn_WMMeasureItem(HWND hDlg, LPARAM lParam)
HFONT hfontprev;
TEXTMETRICW tm;
LPMEASUREITEMSTRUCT lpmi=(LPMEASUREITEMSTRUCT)lParam;
- INT height = 0;
+ INT height = 0, cx;
if (!himlTT)
himlTT = ImageList_LoadImageW( COMDLG32_hInstance, MAKEINTRESOURCEW(38),
TTBITMAP_XSIZE, 0, CLR_DEFAULT, IMAGE_BITMAP, 0);
- ImageList_GetIconSize( himlTT, 0, &height);
+ ImageList_GetIconSize( himlTT, &cx, &height);
lpmi->itemHeight = height + 2;
/* use MAX of bitmap height and tm.tmHeight .*/
hdc=GetDC(hDlg);
More information about the wine-cvs
mailing list