comctl32/listview: Fix regression caused by 2796763ee3ef87904fd92f4f753c138a1be295bd

Nikolay Sivov bunglehead at gmail.com
Thu Apr 30 07:04:10 CDT 2009


http://bugs.winehq.org/show_bug.cgi?id=18299

Regression looks like an assertion when grid lines are drawing and
no columns added.

Changelog:
    - Check columns array size before trying to obtain rectangl

>From ae238d04da0047e4597fb14eb8b9e04e8996934a Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Thu, 30 Apr 2009 15:59:21 +0400
Subject: Fix regression caused by 2796763ee3ef87904fd92f4f753c138a1be295bd

---
 dlls/comctl32/listview.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index bfe47a3..169c242 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -4156,11 +4156,11 @@ static void LISTVIEW_RefreshReportGrid(LISTVIEW_INFO *infoPtr, HDC hdc)
     INT rgntype;
     INT y, itemheight;
     HPEN hPen, hOldPen;
-    RECT rcClip, rcItem;
+    RECT rcClip, rcItem = {0};
     POINT Origin;
     RANGE colRange;
     ITERATOR j;
-    BOOL rmost;
+    BOOL rmost = FALSE;
 
     TRACE("()\n");
 
@@ -4183,8 +4183,11 @@ static void LISTVIEW_RefreshReportGrid(LISTVIEW_INFO *infoPtr, HDC hdc)
         if (rcItem.left + Origin.x < rcClip.right) break;
     }
     /* is right most vertical line visible? */
-    LISTVIEW_GetHeaderRect(infoPtr, DPA_GetPtrCount(infoPtr->hdpaColumns) - 1, &rcItem);
-    rmost = (rcItem.right + Origin.x < rcClip.right);
+    if (DPA_GetPtrCount(infoPtr->hdpaColumns) > 0)
+    {
+        LISTVIEW_GetHeaderRect(infoPtr, DPA_GetPtrCount(infoPtr->hdpaColumns) - 1, &rcItem);
+        rmost = (rcItem.right + Origin.x < rcClip.right);
+    }
 
     if ((hPen = CreatePen( PS_SOLID, 1, comctl32_color.clr3dFace )))
     {
-- 
1.5.6.5





More information about the wine-patches mailing list