From 8c4457aed4e88b9013d1f96bc86ba2f3d4ceb3ce Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 13 Dec 2012 14:51:00 +0000 Subject: [PATCH] don't leak event infos when no cb is set for pulse events SVN revision: 80873 --- src/modules/mixer/serial.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/mixer/serial.c b/src/modules/mixer/serial.c index 0ec7203ec..277d06c23 100644 --- a/src/modules/mixer/serial.c +++ b/src/modules/mixer/serial.c @@ -139,10 +139,10 @@ deserialize_tag(Pulse *conn, PA_Commands command, Pulse_Tag *tag) if (!cb) return EINA_TRUE; ev = NULL; ev = deserialize_server_info(conn, tag); + if (!cb) pulse_server_info_free(ev); break; case PA_COMMAND_GET_SINK_INFO_LIST: case PA_COMMAND_GET_SOURCE_INFO_LIST: - if (!cb) return EINA_TRUE; ev = NULL; while (tag->size < tag->dsize - PA_TAG_SIZE_STRING_NULL) { @@ -155,13 +155,16 @@ deserialize_tag(Pulse *conn, PA_Commands command, Pulse_Tag *tag) pulse_sink_free(sink); break; } - ev = eina_list_append(ev, sink); + if (!cb) pulse_sink_free(sink); + else + ev = eina_list_append(ev, sink); } break; case PA_COMMAND_GET_SINK_INFO: case PA_COMMAND_GET_SOURCE_INFO: if ((!cb) && (!conn->watching)) return EINA_TRUE; ev = deserialize_sink(conn, tag, (command == PA_COMMAND_GET_SOURCE_INFO)); + if (!cb) pulse_sink_free(ev); break; case 0: deserialize_sinks_watcher(conn, tag);