diff -r 5f0500efc781 -r 41f7d4545566 pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Sun Aug 17 07:55:38 2008 +0000 +++ b/pidgin/gtkprefs.c Mon Aug 18 06:25:38 2008 +0000 @@ -2121,7 +2121,11 @@ if (video != NULL) { GList *video_devices = purple_media_get_devices(video); video_items = get_device_items(video, video_devices); - g_list_free(video_devices); + for(; video_devices; video_devices = g_list_delete_link( + video_devices, video_devices)) { + g_value_unset(video_devices->data); + g_free(video_devices->data); + } } if (video_items == NULL) { @@ -2227,13 +2231,21 @@ if (video != NULL) { GList *video_devices = purple_media_get_devices(video); video_items = get_device_items(video, video_devices); - g_list_free(video_devices); + for(; video_devices; video_devices = g_list_delete_link( + video_devices, video_devices)) { + g_value_unset(video_devices->data); + g_free(video_devices->data); + } } if (audio != NULL) { GList *audio_devices = purple_media_get_devices(audio); audio_items = get_device_items(audio, audio_devices); - g_list_free(audio_devices); + for(; audio_devices; audio_devices = g_list_delete_link( + audio_devices, audio_devices)) { + g_value_unset(audio_devices->data); + g_free(audio_devices->data); + } } if (video_items == NULL) {