Module: wine Branch: master Commit: 9c87c7e76dbb860884308c7f609fb3588d3e686d URL: http://source.winehq.org/git/wine.git/?a=commit;h=9c87c7e76dbb860884308c7f60...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Oct 7 10:17:14 2015 +0200
comctl32: Don't use uninitialized LVITEM fields in LISTVIEW_InsertItemT when LVS_EX_CHECKBOXES was specified.
Signed-off-by: Piotr Caban piotr@codeweavers.com
---
dlls/comctl32/listview.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c index c0956ad..a76935a 100644 --- a/dlls/comctl32/listview.c +++ b/dlls/comctl32/listview.c @@ -7851,10 +7851,18 @@ static INT LISTVIEW_InsertItemT(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, item.iItem = nItem; if (infoPtr->dwLvExStyle & LVS_EX_CHECKBOXES) { - item.mask |= LVIF_STATE; - item.stateMask |= LVIS_STATEIMAGEMASK; - item.state &= ~LVIS_STATEIMAGEMASK; - item.state |= INDEXTOSTATEIMAGEMASK(1); + if (item.mask & LVIF_STATE) + { + item.stateMask |= LVIS_STATEIMAGEMASK; + item.state &= ~LVIS_STATEIMAGEMASK; + item.state |= INDEXTOSTATEIMAGEMASK(1); + } + else + { + item.mask |= LVIF_STATE; + item.stateMask = LVIS_STATEIMAGEMASK; + item.state = INDEXTOSTATEIMAGEMASK(1); + } }
if (!set_main_item(infoPtr, &item, TRUE, isW, &has_changed)) goto undo;