diff libpurple/media.c @ 23852:a1a1f44cdecc

Fixed some memory leak issues involving GLists.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Fri, 11 Jul 2008 02:10:04 +0000
parents 86f05fa8a90a
children 1c68f78414b7
line wrap: on
line diff
--- a/libpurple/media.c	Fri Jul 11 01:35:54 2008 +0000
+++ b/libpurple/media.c	Fri Jul 11 02:10:04 2008 +0000
@@ -337,12 +337,11 @@
 	GList *values = g_hash_table_get_values(media->priv->sessions);
 	PurpleMediaStreamType type = PURPLE_MEDIA_NONE;
 
-	for (; values; values = values->next) {
+	for (; values; values = g_list_delete_link(values, values)) {
 		PurpleMediaSession *session = values->data;
 		type |= session->type;
 	}
 
-	g_list_free(values);
 	return type;
 }
 
@@ -458,7 +457,7 @@
 {
 	GList *values = g_hash_table_get_values(media->priv->sessions);
 
-	for (; values; values = values->next) {
+	for (; values; values = g_list_delete_link(values, values)) {
 		PurpleMediaSession *session = (PurpleMediaSession*)values->data;
 
 		if (session->type & PURPLE_MEDIA_SEND_AUDIO && audio_src)
@@ -470,8 +469,6 @@
 		if (session->type & PURPLE_MEDIA_RECV_VIDEO && video_sink)
 			*video_sink = session->sink;
 	}
-
-	g_list_free(values);
 }
 
 void