Nikolay Sivov : comctl32/imagelist: Fix failure code for IImageList_Draw().

Alexandre Julliard julliard at winehq.org
Fri Aug 20 10:19:14 CDT 2010


Module: wine
Branch: master
Commit: 5ee4441c15fd57348a149e1a71bbbca87b14e9a0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5ee4441c15fd57348a149e1a71bbbca87b14e9a0

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Aug 19 09:42:44 2010 +0400

comctl32/imagelist: Fix failure code for IImageList_Draw().

---

 dlls/comctl32/imagelist.c       |    9 +++------
 dlls/comctl32/tests/imagelist.c |   10 ++++++++--
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 47279c9..c37c7a0 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -3298,11 +3298,8 @@ static HRESULT WINAPI ImageListImpl_Draw(IImageList *iface,
     IMAGELISTDRAWPARAMS *pimldp)
 {
     HIMAGELIST This = (HIMAGELIST) iface;
-    HIMAGELIST old_himl = 0;
-    int ret = 0;
-
-    if (!pimldp)
-        return E_FAIL;
+    HIMAGELIST old_himl;
+    int ret;
 
     /* As far as I can tell, Windows simply ignores the contents of pimldp->himl
        so we shall simulate the same */
@@ -3312,7 +3309,7 @@ static HRESULT WINAPI ImageListImpl_Draw(IImageList *iface,
     ret = ImageList_DrawIndirect(pimldp);
 
     pimldp->himl = old_himl;
-    return ret ? S_OK : E_FAIL;
+    return ret ? S_OK : E_INVALIDARG;
 }
 
 static HRESULT WINAPI ImageListImpl_Remove(IImageList *iface, int i)
diff --git a/dlls/comctl32/tests/imagelist.c b/dlls/comctl32/tests/imagelist.c
index de6d2c3..191b796 100644
--- a/dlls/comctl32/tests/imagelist.c
+++ b/dlls/comctl32/tests/imagelist.c
@@ -1596,9 +1596,15 @@ static void test_IImageList_Draw(void)
     ok( IImageList_SetImageCount(imgl, 3) == S_OK, "Setimage count failed\n");
     ok( IImageList_Replace(imgl, 2, hbm3, 0) == S_OK, "failed to replace bitmap 3\n");
 
+if (0)
+{
+    /* crashes on native */
+    hr = IImageList_Draw(imgl, NULL);
+}
+
     memset(&imldp, 0, sizeof (imldp));
     hr = IImageList_Draw(imgl, &imldp);
-    todo_wine ok( hr == E_INVALIDARG, "got 0x%08x\n", hr);
+    ok( hr == E_INVALIDARG, "got 0x%08x\n", hr);
 
     imldp.cbSize = IMAGELISTDRAWPARAMS_V3_SIZE;
     imldp.hdcDst = hdc;
@@ -1618,7 +1624,7 @@ static void test_IImageList_Draw(void)
     imldp.i ++;
     ok( IImageList_Draw(imgl, &imldp) == S_OK, "should succeed\n");
     imldp.i ++;
-    todo_wine ok( IImageList_Draw(imgl, &imldp) == E_INVALIDARG, "should fail\n");
+    ok( IImageList_Draw(imgl, &imldp) == E_INVALIDARG, "should fail\n");
 
     /* remove three */
     ok( IImageList_Remove(imgl, 0) == S_OK, "removing 1st bitmap\n");




More information about the wine-cvs mailing list