[PATCH] Exit early on LVM_CREATEDRAGIMAGE if null pointer passed for a point
Nikolay Sivov
nsivov at codeweavers.com
Mon Apr 19 17:23:28 CDT 2010
---
dlls/comctl32/listview.c | 2 +-
dlls/comctl32/tests/listview.c | 23 +++++++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 642a8aa..9ca52c5 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -5209,7 +5209,7 @@ static HIMAGELIST LISTVIEW_CreateDragImage(LISTVIEW_INFO *infoPtr, INT iItem, LP
HIMAGELIST dragList = 0;
TRACE("iItem=%d Count=%d\n", iItem, infoPtr->nItemCount);
- if (iItem < 0 || iItem >= infoPtr->nItemCount)
+ if (iItem < 0 || iItem >= infoPtr->nItemCount || !lppt)
return 0;
rcItem.left = LVIR_BOUNDS;
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 59c3dc1..2c5ef70 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -4344,6 +4344,28 @@ static void test_header_notification(void)
DestroyWindow(list);
}
+static void test_createdragimage(void)
+{
+ HIMAGELIST himl;
+ POINT pt;
+ HWND list;
+
+ list = create_listview_control(LVS_ICON);
+ ok(list != 0, "failed to create listview window\n");
+
+ insert_item(list, 0);
+
+ /* NULL point */
+ himl = (HIMAGELIST)SendMessageA(list, LVM_CREATEDRAGIMAGE, 0, 0);
+ ok(himl == NULL, "got %p\n", himl);
+
+ himl = (HIMAGELIST)SendMessageA(list, LVM_CREATEDRAGIMAGE, 0, (LPARAM)&pt);
+ ok(himl != NULL, "got %p\n", himl);
+ ImageList_Destroy(himl);
+
+ DestroyWindow(list);
+}
+
START_TEST(listview)
{
HMODULE hComctl32;
@@ -4406,6 +4428,7 @@ START_TEST(listview)
test_finditem();
test_hover();
test_destroynotify();
+ test_createdragimage();
if (!load_v6_module(&ctx_cookie, &hCtx))
{
--
1.5.6.5
--=-QQ3rnM0GqEmRRNQQ7VOs--
More information about the wine-patches
mailing list