comctl32/imagelist: Fail in ImageList_GetIconSize on null parameters.
authorNikolay Sivov <nsivov@codeweavers.com>
Thu, 19 Aug 2010 06:18:16 +0000 (10:18 +0400)
committerAlexandre Julliard <julliard@winehq.org>
Fri, 20 Aug 2010 11:46:49 +0000 (13:46 +0200)
dlls/comctl32/imagelist.c
dlls/comctl32/tab.c
dlls/comctl32/tests/imagelist.c
dlls/comdlg32/fontdlg.c

index f0652e52e4aa0faa39e4b19f51448d77229743e6..6fee577edf7fd46def884713311f8c472e590115 100644 (file)
@@ -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;
 }
index 7057531367198ca2b86e4bc8e7de12ab73081758..8807a113047b852d9e70f37d182fe3e66b6ff160 100644 (file)
@@ -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;
index b6b509cccf0f8e7c4fef2bc90b611f8fe0d644a7..d4699bca589f9b422399e25d430ed43fe386f1f0 100644 (file)
@@ -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);
 }
 
index 6d3ee73da60596507e9cd5d4ba95853b27c0dff5..83400fca3391901d45848a12287805e5c9fee1d6 100644 (file)
@@ -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);