comparison libpurple/protocols/sametime/sametime.c @ 24371:6757bffb3d3a

Fix a potential leak, thanks to "KuSh". Fixes #7464.
author Daniel Atallah <daniel.atallah@gmail.com>
date Fri, 07 Nov 2008 02:52:31 +0000
parents 27eacd38c721
children f387ded6f5ed c6c6dc6ccdc7 051c29d275de cc1e35fa774d
comparison
equal deleted inserted replaced
24370:b4964c3f5f7c 24371:6757bffb3d3a
4488 4488
4489 static void mw_prpl_add_buddy(PurpleConnection *gc, 4489 static void mw_prpl_add_buddy(PurpleConnection *gc,
4490 PurpleBuddy *buddy, 4490 PurpleBuddy *buddy,
4491 PurpleGroup *group) { 4491 PurpleGroup *group) {
4492 4492
4493 struct mwPurplePluginData *pd; 4493 struct mwPurplePluginData *pd = gc->proto_data;
4494 struct mwServiceResolve *srvc; 4494 struct mwServiceResolve *srvc;
4495 GList *query; 4495 GList *query;
4496 enum mwResolveFlag flags; 4496 enum mwResolveFlag flags;
4497 guint32 req; 4497 guint32 req;
4498
4499 BuddyAddData *data; 4498 BuddyAddData *data;
4500
4501 data = g_new0(BuddyAddData, 1);
4502 data->buddy = buddy;
4503 data->group = group;
4504
4505 pd = gc->proto_data;
4506 srvc = pd->srvc_resolve;
4507 4499
4508 /* catch external buddies. They won't be in the resolve service */ 4500 /* catch external buddies. They won't be in the resolve service */
4509 if(buddy_is_external(buddy)) { 4501 if(buddy_is_external(buddy)) {
4510 buddy_add(pd, buddy); 4502 buddy_add(pd, buddy);
4511 return; 4503 return;
4512 } 4504 }
4505
4506 data = g_new0(BuddyAddData, 1);
4507 data->buddy = buddy;
4508 data->group = group;
4509
4510 srvc = pd->srvc_resolve;
4513 4511
4514 query = g_list_prepend(NULL, buddy->name); 4512 query = g_list_prepend(NULL, buddy->name);
4515 flags = mwResolveFlag_FIRST | mwResolveFlag_USERS; 4513 flags = mwResolveFlag_FIRST | mwResolveFlag_USERS;
4516 4514
4517 req = mwServiceResolve_resolve(srvc, query, flags, add_buddy_resolved, 4515 req = mwServiceResolve_resolve(srvc, query, flags, add_buddy_resolved,