From 5b3015751490c39a4be70783173ddcc4ecefde5a Mon Sep 17 00:00:00 2001 From: Andrzej Zaborowski Date: Tue, 17 Aug 2010 17:37:00 +0200 Subject: stkagent: Free pending call when destroying agent Otherwise we leak memory and additionally D-bus invokes the method callback and since the agent is already destroyed, we segfault. --- src/stkagent.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/stkagent.c') diff --git a/src/stkagent.c b/src/stkagent.c index fc05493d..e71436db 100644 --- a/src/stkagent.c +++ b/src/stkagent.c @@ -127,19 +127,20 @@ void stk_agent_request_cancel(struct stk_agent *agent) return; dbus_pending_call_cancel(agent->call); - stk_agent_send_cancel(agent); + + if (agent->disconnect_watch) + stk_agent_send_cancel(agent); + stk_agent_request_end(agent); } void stk_agent_free(struct stk_agent *agent) { DBusConnection *conn = ofono_dbus_get_connection(); - gboolean busy = agent->call != NULL; - if (agent->disconnect_watch) { - if (busy) - stk_agent_send_cancel(agent); + stk_agent_request_cancel(agent); + if (agent->disconnect_watch) { stk_agent_send_release(agent); g_dbus_remove_watch(conn, agent->disconnect_watch); -- cgit v1.2.3