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