HEADER_GetItemA/W should handle message even if index is invalid
Evan Deaubl
wine at warpedview.com
Sat Jan 8 16:18:55 CST 2005
ChangeLog:
* GetItemA/W on header controls should handle message even if index is invalid
--- dlls/comctl32/header.c 6 Nov 2004 03:49:03 -0000 1.67
+++ dlls/comctl32/header.c 8 Jan 2005 21:49:57 -0000
@@ -688,29 +688,36 @@
if (!phdi)
return FALSE;
- if ((nItem < 0) || (nItem >= (INT)infoPtr->uNumItem))
- return FALSE;
TRACE("[nItem=%d]\n", nItem);
if (phdi->mask == 0)
return TRUE;
- lpItem = &infoPtr->items[nItem];
+ if ((nItem < 0) || (nItem >= (INT)infoPtr->uNumItem)) {
+ lpItem = NULL;
+ }
+ else {
+ lpItem = &infoPtr->items[nItem];
+ }
+
if (phdi->mask & HDI_BITMAP)
- phdi->hbm = lpItem->hbm;
+ phdi->hbm = (lpItem != NULL) ? lpItem->hbm : 0;
if (phdi->mask & HDI_FORMAT)
- phdi->fmt = lpItem->fmt;
+ phdi->fmt = (lpItem != NULL) ? lpItem->fmt : 0;
if (phdi->mask & HDI_WIDTH)
- phdi->cxy = lpItem->cxy;
+ phdi->cxy = (lpItem != NULL) ? lpItem->cxy : 0;
if (phdi->mask & HDI_LPARAM)
- phdi->lParam = lpItem->lParam;
+ phdi->lParam = (lpItem != NULL) ? lpItem->lParam : 0;
if (phdi->mask & HDI_TEXT) {
- if (lpItem->pszText != LPSTR_TEXTCALLBACKW) {
+ if (lpItem == NULL) {
+ *phdi->pszText = 0;
+ }
+ else if (lpItem->pszText != LPSTR_TEXTCALLBACKW) {
if (lpItem->pszText)
WideCharToMultiByte (CP_ACP, 0, lpItem->pszText, -1,
phdi->pszText, phdi->cchTextMax, NULL, NULL);
@@ -722,10 +729,10 @@
}
if (phdi->mask & HDI_IMAGE)
- phdi->iImage = lpItem->iImage;
+ phdi->iImage = (lpItem != NULL) ? lpItem->iImage : 0;
if (phdi->mask & HDI_ORDER)
- phdi->iOrder = lpItem->iOrder;
+ phdi->iOrder = (lpItem != NULL) ? lpItem->iOrder : 0;
return TRUE;
}
@@ -741,29 +748,36 @@
if (!phdi)
return FALSE;
- if ((nItem < 0) || (nItem >= (INT)infoPtr->uNumItem))
- return FALSE;
TRACE("[nItem=%d]\n", nItem);
if (phdi->mask == 0)
return TRUE;
- lpItem = &infoPtr->items[nItem];
+ if ((nItem < 0) || (nItem >= (INT)infoPtr->uNumItem)) {
+ lpItem = NULL;
+ }
+ else {
+ lpItem = &infoPtr->items[nItem];
+ }
+
if (phdi->mask & HDI_BITMAP)
- phdi->hbm = lpItem->hbm;
+ phdi->hbm = (lpItem != NULL) ? lpItem->hbm : 0;
if (phdi->mask & HDI_FORMAT)
- phdi->fmt = lpItem->fmt;
+ phdi->fmt = (lpItem != NULL) ? lpItem->fmt : 0;
if (phdi->mask & HDI_WIDTH)
- phdi->cxy = lpItem->cxy;
+ phdi->cxy = (lpItem != NULL) ? lpItem->cxy : 0;
if (phdi->mask & HDI_LPARAM)
- phdi->lParam = lpItem->lParam;
+ phdi->lParam = (lpItem != NULL) ? lpItem->lParam : 0;
if (phdi->mask & HDI_TEXT) {
- if (lpItem->pszText != LPSTR_TEXTCALLBACKW) {
+ if (lpItem == NULL) {
+ *phdi->pszText = 0;
+ }
+ else if (lpItem->pszText != LPSTR_TEXTCALLBACKW) {
if (lpItem->pszText)
lstrcpynW (phdi->pszText, lpItem->pszText, phdi->cchTextMax);
else
@@ -774,10 +788,10 @@
}
if (phdi->mask & HDI_IMAGE)
- phdi->iImage = lpItem->iImage;
+ phdi->iImage = (lpItem != NULL) ? lpItem->iImage : 0;
if (phdi->mask & HDI_ORDER)
- phdi->iOrder = lpItem->iOrder;
+ phdi->iOrder = (lpItem != NULL) ? lpItem->iOrder : 0;
return TRUE;
}
More information about the wine-patches
mailing list