summaryrefslogtreecommitdiffstats
path: root/src/stkagent.c
diff options
context:
space:
mode:
authorAndrzej Zaborowski <andrew.zaborowski@intel.com>2010-08-17 17:37:00 +0200
committerDenis Kenzior <denkenz@gmail.com>2010-08-18 00:27:08 -0500
commit5b3015751490c39a4be70783173ddcc4ecefde5a (patch)
treee7a52e60bb1fd59c248cae1038fc9b90a284fd11 /src/stkagent.c
parentcab1dffe2b4573ad25f597d183e9aa02166c7473 (diff)
downloadofono-5b3015751490c39a4be70783173ddcc4ecefde5a.tar.bz2
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.
Diffstat (limited to 'src/stkagent.c')
-rw-r--r--src/stkagent.c11
1 files changed, 6 insertions, 5 deletions
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);