diff options
author | Paul Aurich <darkrain42@pidgin.im> | 2009-04-12 22:23:34 +0000 |
---|---|---|
committer | Paul Aurich <darkrain42@pidgin.im> | 2009-04-12 22:23:34 +0000 |
commit | 7f7400bf572827ba81ebd963ca0472ed34c72bcf (patch) | |
tree | eb111ab4112281bfb144bbbd7f56112fe158d067 /libpurple/network.c | |
parent | d7550289e02fce2a666d8aaa5a798b1912f1c1fa (diff) | |
download | pidgin-7f7400bf572827ba81ebd963ca0472ed34c72bcf.tar.gz |
Don't leak the struct sockaddr* from purple_dnsquery_a.
At least one of these gives me:
==00:00:06:28.468 13659== 32 bytes in 2 blocks are definitely lost in loss record 1,020 of 3,383
==00:00:06:28.468 13659== at 0x04c278ae: malloc (vg_replace_malloc.c:207)
==00:00:06:28.468 13659== by 0x09b29a12: g_malloc (gmem.c:131)
==00:00:06:28.468 13659== by 0x07d2fd8c: host_resolved (dnsquery.c:578)
Diffstat (limited to 'libpurple/network.c')
-rw-r--r-- | libpurple/network.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libpurple/network.c b/libpurple/network.c index 3fec1551e6..fb008f886f 100644 --- a/libpurple/network.c +++ b/libpurple/network.c @@ -825,8 +825,13 @@ purple_network_ip_lookup_cb(GSList *hosts, gpointer data, *ip = g_strdup(dst); purple_debug_info("network", "set IP address: %s\n", *ip); } - - g_slist_free(hosts); + + while (hosts != NULL) { + hosts = g_slist_delete_link(hosts, hosts); + /* Free the address */ + g_free(hosts->data); + hosts = g_slist_delete_link(hosts, hosts); + } } void |