libpurple/protocols/jabber/buddy.c

changeset 40145
27c5004a6c65
parent 40139
13cfb1168f42
child 40160
af68597474ae
equal deleted inserted replaced
40144:1d0c0fab2b72 40145:27c5004a6c65
72 static void 72 static void
73 jabber_buddy_resource_free(JabberBuddyResource *jbr) 73 jabber_buddy_resource_free(JabberBuddyResource *jbr)
74 { 74 {
75 g_return_if_fail(jbr != NULL); 75 g_return_if_fail(jbr != NULL);
76 76
77 jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
78
79 g_list_free_full(jbr->commands, (GDestroyNotify)jabber_adhoc_commands_free); 77 g_list_free_full(jbr->commands, (GDestroyNotify)jabber_adhoc_commands_free);
80 g_list_free_full(jbr->caps.exts, g_free); 78 g_list_free_full(jbr->caps.exts, g_free);
81 g_free(jbr->name); 79 g_free(jbr->name);
82 g_free(jbr->status); 80 g_free(jbr->status);
83 g_free(jbr->thread_id); 81 g_free(jbr->thread_id);
90 void jabber_buddy_free(JabberBuddy *jb) 88 void jabber_buddy_free(JabberBuddy *jb)
91 { 89 {
92 g_return_if_fail(jb != NULL); 90 g_return_if_fail(jb != NULL);
93 91
94 g_free(jb->error_msg); 92 g_free(jb->error_msg);
95 while(jb->resources) 93 g_list_free_full(jb->resources, (GDestroyNotify)jabber_buddy_resource_free);
96 jabber_buddy_resource_free(jb->resources->data);
97 94
98 g_free(jb); 95 g_free(jb);
99 } 96 }
100 97
101 JabberBuddy *jabber_buddy_find(JabberStream *js, const char *name, 98 JabberBuddy *jabber_buddy_find(JabberStream *js, const char *name,
254 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource); 251 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource);
255 252
256 if(!jbr) 253 if(!jbr)
257 return; 254 return;
258 255
256 jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
259 jabber_buddy_resource_free(jbr); 257 jabber_buddy_resource_free(jbr);
260 } 258 }
261 259
262 /******* 260 /*******
263 * This is the old vCard stuff taken from the old prpl. vCards, by definition 261 * This is the old vCard stuff taken from the old prpl. vCards, by definition

mercurial