On 7/22/2011 08:26, Jay Yang wrote:
On 07/22/2011 12:19 AM, Nikolay Sivov wrote:
On 7/22/2011 06:59, Jay Yang wrote:
diff --git a/dlls/comctl32/comboex.c b/dlls/comctl32/comboex.c
index 3402a71..4888519 100644
--- a/dlls/comctl32/comboex.c
+++ b/dlls/comctl32/comboex.c
@@ -1557,6 +1557,11 @@ static void COMBOEX_ResetContent (COMBOEX_INFO *infoPtr)

           item = infoPtr->items;
           while (item) {
+            NMCOMBOBOXEXW nmcit;
+            memset (&nmcit.ceItem, 0, sizeof(nmcit.ceItem));
+            nmcit.ceItem.mask=~0;
+            COMBOEX_CopyItem (item,&nmcit.ceItem);
+            COMBOEX_NotifyItem (infoPtr, CBEN_DELETEITEM,&nmcit);
               next = item->next;
               COMBOEX_FreeText (item);
               Free (item);
First of all no need for memset probably, and it's common rule I think (well 
for me at least) to
avoid unneeded initialization.
At the very least I need to set the pszText field to null because 
COMBOEX_CopyItem looks at that to
determine whether to copy the array. Mostly I was just following the other 
examples in the file.
I see, let it be that way then.

As we have message to delete a single item, it's probably time to think about 
factoring out item
deletion helper (that sends notification too).

Actually it seems strange for me that this control uses list to store item 
data, cause messages
are clearly index based. So first thing I'd like to see with that is to change 
item storage to use
DPA array as others controls do. But if you don't have time for that now, I 
could try to do it
myself.
Yeah, I'm not exactly focused on controls right now, I'm just trying to fix a 
memory leak that I
found in explorer because it doesn't get the CBEM_DELETEITEM notification, so 
if you know a more
correct way to do this, by all means do it. On the otherhand, I do sort of want 
to get some kind of
fix in sometime soon for this because it causes a memory leak in explorer.
Okay, so I'll take a look at item storage for it in a couple of days.


--
Jay Yang




Reply via email to