From e1a6fb26945ae471bae221d62c558d58bb5ba20e Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Fri, 4 Jan 2013 16:10:37 +0100 Subject: [PATCH] p2p: Fix memory leak in p2p_listener_event g_io_add_watch keeps own reference to iochannel so local reference should be dropped before leaving. 882 (840 direct, 42 indirect) bytes in 7 blocks are definitely lost in loss record 177 of 192 at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x4E7FA78: g_malloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4EB66F4: g_io_channel_unix_new (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x416C6F: p2p_listener_event (p2p.c:187) by 0x4E79D52: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E7A09F: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E7A499: g_main_loop_run (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x408DDE: main (main.c:221) --- plugins/p2p.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/p2p.c b/plugins/p2p.c index f29cd88..6385c4d 100644 --- a/plugins/p2p.c +++ b/plugins/p2p.c @@ -192,6 +192,8 @@ static gboolean p2p_listener_event(GIOChannel *channel, GIOCondition condition, p2p_client_event, client_data); + g_io_channel_unref(client_channel); + server_data->client_list = g_list_append(server_data->client_list, client_data); return TRUE; -- 2.7.4