diff libpurple/protocols/yahoo/libymsg.c @ 28162:44930be7114b

Fix two memory leaks. We were setting norm_bud and temp to NULL without freeing them first. I'm guessing this wasn't severe, but I didn't really look at what this code does.
author Mark Doliner <mark@kingant.net>
date Tue, 04 Aug 2009 08:14:41 +0000
parents da33da2e1a1e
children 90b471ba5282
line wrap: on
line diff
--- a/libpurple/protocols/yahoo/libymsg.c	Tue Aug 04 04:19:34 2009 +0000
+++ b/libpurple/protocols/yahoo/libymsg.c	Tue Aug 04 08:14:41 2009 +0000
@@ -478,7 +478,7 @@
 	PurpleAccount *account = purple_connection_get_account(gc);
 	YahooData *yd = gc->proto_data;
 	GHashTable *ht;
-	char *norm_bud = NULL;
+	char *norm_bud;
 	char *temp = NULL;
 	YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */
 	                       /* But what if you had no friends? */
@@ -487,7 +487,6 @@
 	int protocol = 0;
 	int stealth = 0;
 
-
 	ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
 
 	while (l) {
@@ -546,9 +545,11 @@
 					purple_privacy_deny_add(account, norm_bud, 1);
 				}
 
+				g_free(norm_bud);
+
 				protocol = 0;
 				stealth = 0;
-				norm_bud = NULL;
+				g_free(temp);
 				temp = NULL;
 			}
 			break;
@@ -559,6 +560,7 @@
 			yd->current_list15_grp = yahoo_string_decode(gc, pair->value, FALSE);
 			break;
 		case 7: /* buddy's s/n */
+			g_free(temp);
 			temp = g_strdup(purple_normalize(account, pair->value));
 			break;
 		case 241: /* another protocol user */
@@ -594,7 +596,6 @@
 	yahoo_set_status(account, purple_account_get_active_status(account));
 
 	g_hash_table_destroy(ht);
-	g_free(norm_bud);
 	g_free(temp);
 }