[PATCH v2 08/10] comctl32/listbox: Send LB_RESETCONTENT from RemoveItem rather than DeleteItem
Huw Davies
huw at codeweavers.com
Tue Feb 12 03:32:25 CST 2019
On Mon, Feb 11, 2019 at 07:03:11PM +0200, Gabriel Ivăncescu wrote:
> Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
> ---
>
> Ok, this is how I ended up making the code simpler later. The reason being
> that it really makes no sense at all to send LB_RESETCONTENT from within
> DeleteItem: that function is called *from* ResetContent itself and it only
> happened to work since it updated nb_items afterward. It was too fragile
> to begin with.
>
> Note that LB_RESETCONTENT already calls DeleteItem, so we can simply re-use
> that, and IMO this makes much more sense and will simplify the code in the
> last patch.
Good, this is clearly how it should be done.
> dlls/comctl32/listbox.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/dlls/comctl32/listbox.c b/dlls/comctl32/listbox.c
> index 633e7c6..0f74e80 100644
> --- a/dlls/comctl32/listbox.c
> +++ b/dlls/comctl32/listbox.c
> @@ -1660,13 +1660,9 @@ static LRESULT LISTBOX_InsertString( LB_DESCR *descr, INT index, LPCWSTR str )
> */
> static void LISTBOX_DeleteItem( LB_DESCR *descr, INT index )
> {
> - /* save the item data before it gets freed by LB_RESETCONTENT */
> ULONG_PTR item_data = descr->items[index].data;
> LPWSTR item_str = descr->items[index].str;
As a nit-pick, there's no need to have these temp variables anymore,
you can just call the getter helpers as needed. (Yes, we'll call
get_item_data() twice, but it'll almost certainly get inlined anyway).
Huw.
More information about the wine-devel
mailing list