summaryrefslogtreecommitdiff
path: root/src/sdp-client.c
diff options
context:
space:
mode:
authorSzymon Janc <szymon.janc@tieto.com>2014-09-12 10:54:07 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2014-09-12 09:43:38 -0700
commit9d8f94405d1cca7d7808a7179f0a823bc27069e3 (patch)
tree66d8acb41727297d474eae02c0090eb58d172311 /src/sdp-client.c
parent2f15797dfa4dddaeb47738f4481f2b756f8a7c07 (diff)
downloadbluez-9d8f94405d1cca7d7808a7179f0a823bc27069e3.tar.gz
core: Fix missing channel unref on cached session watch
g_io_add_watch function takes own reference so local one needs to be dropped. Fix following Valgrind report: 126 (120 direct, 6 indirect) bytes in 1 blocks are definitely lost in loss record 146 of 158 at 0x4C2745D: malloc (in /usr/lib64/valgrind/ vgpreload_memcheck-amd64-linux.so) by 0x4E7FE6E: g_malloc (in /usr/lib64/libglib-2.0.so.0.3800.2) by 0x4EBC5B7: g_io_channel_unix_new (in /usr/lib64/ libglib-2.0.so.0.3800.2) by 0x4496B4: search_completed_cb (sdp-client.c:129) by 0x45217B: sdp_process (sdp.c:4350) by 0x449814: search_process_cb (sdp-client.c:228) by 0x4E7A2A5: g_main_context_dispatch (in /usr/ lib64/libglib-2.0.so.0.3800.2) by 0x4E7A627: ??? (in /usr/lib64/libglib-2.0.so.0.3800.2) by 0x4E7AA39: g_main_loop_run (in /usr/lib64/libglib-2.0.so.0.3800.2) by 0x404372: main (main.c:550)
Diffstat (limited to 'src/sdp-client.c')
-rw-r--r--src/sdp-client.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/sdp-client.c b/src/sdp-client.c
index fbe266e67..bca2496cf 100644
--- a/src/sdp-client.c
+++ b/src/sdp-client.c
@@ -130,6 +130,8 @@ static void cache_sdp_session(bdaddr_t *src, bdaddr_t *dst,
cached->io_id = g_io_add_watch(chan, G_IO_HUP | G_IO_ERR | G_IO_NVAL,
disconnect_watch, cached);
+
+ g_io_channel_unref(chan);
}
struct search_context {