Module: wine Branch: master Commit: 66c9a73db55103fd83718838c99c866121c7c6a7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=66c9a73db55103fd83718838c9...
Author: Nikolay Sivov nsivov@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);