Mike McCormack : comctl32:
Check subitem is valid before calling LISTVIEW_InvalidateSubItem().
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jan 4 15:09:23 CST 2007
Module: wine
Branch: master
Commit: d6ea1bf120c3876b58edfa61b4ebd3bdb1ffc562
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d6ea1bf120c3876b58edfa61b4ebd3bdb1ffc562
Author: Mike McCormack <mike at codeweavers.com>
Date: Thu Jan 4 19:37:59 2007 +0900
comctl32: Check subitem is valid before calling LISTVIEW_InvalidateSubItem().
---
dlls/comctl32/listview.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index ad3127e..6340c87 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -3573,7 +3573,7 @@ static BOOL LISTVIEW_SetItemT(LISTVIEW_I
HWND hwndSelf = infoPtr->hwndSelf;
LPWSTR pszText = NULL;
BOOL bResult, bChanged = FALSE;
-
+
TRACE("(lpLVItem=%s, isW=%d)\n", debuglvitem_t(lpLVItem, isW), isW);
if (!lpLVItem || lpLVItem->iItem < 0 || lpLVItem->iItem >= infoPtr->nItemCount)
@@ -3585,10 +3585,10 @@ static BOOL LISTVIEW_SetItemT(LISTVIEW_I
pszText = lpLVItem->pszText;
((LVITEMW *)lpLVItem)->pszText = textdupTtoW(lpLVItem->pszText, isW);
}
-
+
/* actually set the fields */
if (!is_assignable_item(lpLVItem, infoPtr->dwStyle)) return FALSE;
-
+
if (lpLVItem->iSubItem)
bResult = set_sub_item(infoPtr, lpLVItem, TRUE, &bChanged);
else
@@ -3601,7 +3601,8 @@ static BOOL LISTVIEW_SetItemT(LISTVIEW_I
{
/* this little optimization eliminates some nasty flicker */
if ( uView == LVS_REPORT && !(infoPtr->dwStyle & LVS_OWNERDRAWFIXED) &&
- (!(infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT) || lpLVItem->iSubItem) )
+ !(infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT) &&
+ lpLVItem->iSubItem > 0 && lpLVItem->iSubItem <= DPA_GetPtrCount(infoPtr->hdpaColumns) )
LISTVIEW_InvalidateSubItem(infoPtr, lpLVItem->iItem, lpLVItem->iSubItem);
else
LISTVIEW_InvalidateItem(infoPtr, lpLVItem->iItem);
More information about the wine-cvs
mailing list