[PATCH 5/5] comctl32/listbox: Shrink the item array with resize_storage
Gabriel Ivăncescu
gabrielopcode at gmail.com
Thu Feb 7 05:14:40 CST 2019
On 2/7/19 11:54 AM, Huw Davies wrote:
> On Thu, Jan 31, 2019 at 05:23:23PM +0200, Gabriel Ivăncescu wrote:
>> Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
>> ---
>> dlls/comctl32/listbox.c | 22 ++++++----------------
>> 1 file changed, 6 insertions(+), 16 deletions(-)
>>
>> diff --git a/dlls/comctl32/listbox.c b/dlls/comctl32/listbox.c
>> index f1ecc52..4ff98d4 100644
>> --- a/dlls/comctl32/listbox.c
>> +++ b/dlls/comctl32/listbox.c
>> @@ -131,7 +131,8 @@ static BOOL resize_storage(LB_DESCR *descr, UINT items_size)
>> {
>> LB_ITEMDATA *items;
>>
>> - if (items_size > descr->items_size)
>> + if (items_size > descr->items_size ||
>> + items_size + LB_ARRAY_GRANULARITY * 2 < descr->items_size)
>> {
>> items_size = (items_size + LB_ARRAY_GRANULARITY - 1) & ~(LB_ARRAY_GRANULARITY - 1);
>> items = heap_realloc(descr->items, items_size * sizeof(LB_ITEMDATA));
>> @@ -704,7 +705,9 @@ static void LISTBOX_DrawFocusRect( LB_DESCR *descr, BOOL on )
>> */
>> static LRESULT LISTBOX_InitStorage( LB_DESCR *descr, INT nb_items )
>> {
>> - if (!resize_storage(descr, descr->nb_items + nb_items))
>> + UINT new_size = descr->nb_items + nb_items;
>> +
>> + if (new_size > descr->items_size && !resize_storage(descr, new_size))
>> return LB_ERRSPACE;
>> return descr->items_size;
>
> To avoid patching something you changed in [2/5] you could move this hunk to [2/5].
>
Sure will do, I wanted to reduce the patch size/impact.
More information about the wine-devel
mailing list