Hi Daniel and Philippe,

>>> On emscripten, function pointer casts can cause function call failure.
>>> This commit fixes the function definition to match to the type of the
>>> function call using g_list_sort_with_data.
>>>
>>> Signed-off-by: Kohei Tokunaga <ktokunaga.m...@gmail.com>
>>> ---
>>>   hw/core/loader.c | 4 ++--
>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/hw/core/loader.c b/hw/core/loader.c
>>> index 2e35f0aa90..93a8b45d28 100644
>>> --- a/hw/core/loader.c
>>> +++ b/hw/core/loader.c
>>> @@ -1410,7 +1410,7 @@ typedef struct RomSec {
>>>    * work, but this way saves a little work later by avoiding
>>>    * dealing with "gaps" of 0 length.
>>>    */
>>> -static gint sort_secs(gconstpointer a, gconstpointer b)
>>> +static gint sort_secs(gconstpointer a, gconstpointer b, gpointer d)
>>>   {
>>>       RomSec *ra = (RomSec *) a;
>>>       RomSec *rb = (RomSec *) b;
>>> @@ -1463,7 +1463,7 @@ RomGap rom_find_largest_gap_between(hwaddr base,
size_t size)
>>>       /* sentinel */
>>>       secs = add_romsec_to_list(secs, base + size, 1);
>>>
>>> -    secs = g_list_sort(secs, sort_secs);
>>> +    secs = g_list_sort_with_data(secs, sort_secs, NULL);
>>
>> I don't see what the problem is with the original code.
>
>IIUC the rationale is in patch #10 where Kohei poisons g_list_sort():
>
>   On emscripten, function pointer casts can cause function call
>   failure. g_list_sort and g_slist_sort performs this internally
>   so can't be used on Emscripten. Instead, g_list_sort_with_data
>   and g_slist_sort_with_data should be used.

Thank you for the feedback. As Philippe pointed out, the rationale is
explained in the patch #10. I'll make sure to include the explanation in
the commit message of this patch as well.

Reply via email to