pidgin/ljfisher-ssl-client-auth

Fix another leak

2011-05-19, Paul Aurich
4f1fa7bd4bd9
Fix another leak

==13267== 624 (144 direct, 480 indirect) bytes in 6 blocks are definitely lost in loss record 14,700 of 15,489
==13267== at 0x4C2779D: malloc (vg_replace_malloc.c:236)
==13267== by 0x9014392: g_malloc (gmem.c:164)
==13267== by 0x902AFE6: g_slice_alloc (gslice.c:842)
==13267== by 0x90084BD: g_list_prepend (glist.c:309)
==13267== by 0x932797F: purple_log_get_log_sets (log.c:1087)
==13267== by 0x4B3929: add_completion_list (gtkutils.c:2093)
#include <string.h>
#include <glib.h>
#include "dbus-useful.h"
#include "conversation.h"
#include "util.h"
PurpleAccount *
purple_accounts_find_ext(const char *name, const char *protocol_id,
gboolean (*account_test)(const PurpleAccount *account))
{
PurpleAccount *result = NULL;
GList *l;
char *who;
if (name)
who = g_strdup(purple_normalize(NULL, name));
else
who = NULL;
for (l = purple_accounts_get_all(); l != NULL; l = l->next) {
PurpleAccount *account = (PurpleAccount *)l->data;
if (who && strcmp(purple_normalize(NULL, purple_account_get_username(account)), who))
continue;
if (protocol_id && strcmp(account->protocol_id, protocol_id))
continue;
if (account_test && !account_test(account))
continue;
result = account;
break;
}
g_free(who);
return result;
}
PurpleAccount *purple_accounts_find_any(const char *name, const char *protocol)
{
return purple_accounts_find_ext(name, protocol, NULL);
}
PurpleAccount *purple_accounts_find_connected(const char *name, const char *protocol)
{
return purple_accounts_find_ext(name, protocol, purple_account_is_connected);
}