[Spice-devel] [PATCH spice-gtk] glib-compat: g_slist_free_full: pass the right ptr to destroy (rhbz#997893)

Hans de Goede hdegoede at redhat.com
Mon Aug 19 08:20:54 PDT 2013


Hi,

On 08/19/2013 05:16 PM, Christophe Fergeau wrote:
> On Mon, Aug 19, 2013 at 04:53:21PM +0200, Hans de Goede wrote:
>> The destroy function passed to g_slist_free_full should be passed the elements
>> data pointer, not the element itself.
>>
>> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
>> ---
>>   gtk/glib-compat.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/gtk/glib-compat.c b/gtk/glib-compat.c
>> index 21be1f6..c3bb8e6 100644
>> --- a/gtk/glib-compat.c
>> +++ b/gtk/glib-compat.c
>> @@ -88,7 +88,7 @@ g_slist_free_full(GSList         *list,
>>
>>       if (free_func) {
>>           for (el = list; el ; el = g_slist_next(el)) {
>> -            free_func(el);
>> +            free_func(el->data);
>>           }
>
> Can't we just c&p the glib function instead? This is what I do whenever
> possible:

I already pushed my one liner, but you can do a follow up patch if you want.

>
> void
> g_slist_free_full (GSList         *list, GDestroyNotify  free_func)
> {
>    g_slist_foreach (list, (GFunc) free_func, NULL);
>    g_slist_free (list);
> }

Is this really in glib upstream? It is quite ugly with the function
cast, GDestroyNotify and GFunc have significantly different prototypes,
I consider this a rather hacky implementation.

Regards,

Hans


More information about the Spice-devel mailing list