Module: wine Branch: master Commit: d6ea1bf120c3876b58edfa61b4ebd3bdb1ffc562 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d6ea1bf120c3876b58edfa61b4...
Author: Mike McCormack mike@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);