wine/dlls/comctl32 listview.c

Rein Klazes rklazes at xs4all.nl
Thu Sep 26 04:04:20 CDT 2002


On Tue, 24 Sep 2002 22:20:02 -0500, you wrote:

> ChangeSet ID:	5531
> CVSROOT:	/opt/cvs-commit
> Module name:	wine
> Changes by:	julliard at wine.codeweavers.com	2002/09/24 22:20:02
> 
> Modified files:
> 	dlls/comctl32  : listview.c 
> 
> Log message:
> 	Paul Rupe <prupe at myrealbox.com>
> 	- Initialize memory to prevent crashes when -debugmsg +listview is on.
> 	- Fix various array bounds related errors.
> 
> Patch: http://cvs.winehq.com/patch.py?id=5531

This part causes trouble here:

| @@ -6591,11 +6599,6 @@
|      is_sorted = (lStyle & (LVS_SORTASCENDING | LVS_SORTDESCENDING)) &&
|  	        !(lStyle & LVS_OWNERDRAWFIXED) && (LPSTR_TEXTCALLBACKW != lpLVItem->pszText);
|  
| -    nItem = DPA_InsertPtr( infoPtr->hdpaItems, 
| -		           is_sorted ? GETITEMCOUNT( infoPtr ) + 1 : lpLVItem->iItem, 
| -			   hdpaSubItems );
| -    if (nItem == -1) goto fail;
| -   
|      if (!LISTVIEW_SetItemT(infoPtr, lpLVItem, isW)) goto fail;
|  
|      /* if we're sorted, sort the list, and update the index */
| @@ -6606,6 +6609,14 @@
|  	if (nItem == -1) goto fail;
|      }
|  
| +    /* Add the subitem list to the items array. Do this last in case we go to
| +     * fail during the above.
| +     */
| +    nItem = DPA_InsertPtr( infoPtr->hdpaItems, 
| +		           is_sorted ? GETITEMCOUNT( infoPtr ) + 1 : lpLVItem->iItem, 
| +			   hdpaSubItems );
| +    if (nItem == -1) goto fail;
| +   
| 

(before there were no failed calls and the list is not sorted)

I did not look very hard at the cause, but it looks that
LISTVIEW_SetItemT() depends on the inserted subitems in function
set_main_item.

Rein. 
-- 
Rein Klazes
rklazes at xs4all.nl



More information about the wine-devel mailing list