[PATCH 2/9] Remove parameter check from IImageList_Clone()
Nikolay Sivov
nsivov at codeweavers.com
Sat Aug 21 10:14:23 CDT 2010
---
dlls/comctl32/imagelist.c | 6 ++----
dlls/comctl32/tests/imagelist.c | 23 +++++++++++++++++++++++
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 162d0d3..34cf7d3 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -3389,15 +3389,13 @@ static HRESULT WINAPI ImageListImpl_Merge(IImageList *iface, int i1,
return ret;
}
-static HRESULT WINAPI ImageListImpl_Clone(IImageList *iface, REFIID riid,
- PVOID *ppv)
+static HRESULT WINAPI ImageListImpl_Clone(IImageList *iface, REFIID riid, void **ppv)
{
HIMAGELIST This = (HIMAGELIST) iface;
HIMAGELIST hNew;
HRESULT ret = E_FAIL;
- if (!ppv)
- return E_FAIL;
+ TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
hNew = ImageList_Duplicate(This);
diff --git a/dlls/comctl32/tests/imagelist.c b/dlls/comctl32/tests/imagelist.c
index 3530932..a4dae03 100644
--- a/dlls/comctl32/tests/imagelist.c
+++ b/dlls/comctl32/tests/imagelist.c
@@ -1778,6 +1778,28 @@ static void test_create(void)
ok(himl == NULL, "got %p\n", himl);
}
+static void test_IImageList_Clone(void)
+{
+ IImageList *imgl, *imgl2;
+ HIMAGELIST himl;
+ HRESULT hr;
+
+ himl = ImageList_Create(16, 16, ILC_COLOR16, 0, 3);
+ imgl = (IImageList*)himl;
+
+if (0)
+{
+ /* crashes on native */
+ hr = IImageList_Clone(imgl, &IID_IImageList, NULL);
+}
+
+ hr = IImageList_Clone(imgl, &IID_IImageList, (void**)&imgl2);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ IImageList_Release(imgl2);
+
+ IImageList_Release(imgl);
+}
+
START_TEST(imagelist)
{
ULONG_PTR ctx_cookie;
@@ -1830,6 +1852,7 @@ START_TEST(imagelist)
test_IImageList_Get_SetImageCount();
test_IImageList_Draw();
test_IImageList_Merge();
+ test_IImageList_Clone();
CoUninitialize();
--
1.5.6.5
--------------090407010709030703030002--
More information about the wine-patches
mailing list