diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2010-08-17 17:37:00 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-08-18 00:27:08 -0500 |
commit | 5b3015751490c39a4be70783173ddcc4ecefde5a (patch) | |
tree | e7a52e60bb1fd59c248cae1038fc9b90a284fd11 /src/stkagent.c | |
parent | cab1dffe2b4573ad25f597d183e9aa02166c7473 (diff) | |
download | ofono-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.c | 11 |
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); |