On Tue, Nov 22, 2016 at 07:30:19PM +0700, Nguyễn Thái Ngọc Duy wrote:
> This is the follow up of rs/qsort series, merged in b8688ad (Merge
> branch 'rs/qsort' - 2016-10-10), where coccinelle was used to do
> automatic transformation.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
> ---
> coccinelle missed this place, understandably, because it can't know
> that
>
> sizeof(*entries->items)
>
> is the same as
>
> sizeof(*df_name_compare.items)
>
> without some semantic analysis.
That made me wonder why "entries" is used at all. Does it point to the
same struct? But no, df_name_compare is a string list we create with the
same list of strings.
Which is why...
> - qsort(df_sorted_entries.items, entries->nr, sizeof(*entries->items),
> + QSORT(df_sorted_entries.items, entries->nr,
> string_list_df_name_compare);
...it's OK to use entries->nr here, and not df_sorted_entries.nr. It
still seems a bit odd, though. Maybe it's worth making this:
QSORT(df_sorted_entries.items, df_sorted_entries.nr,
string_list_df_name_compare);
while we're at it. Another possibility is:
df_sorted_entries.cmp = string_list_df_name_compare;
string_list_sort(&df_sorted_entries);
It's not any shorter, but maybe it's conceptually simpler.
-Peff