From e3c0f1dabde976043b02858bd135b2081a9cbe90 Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Mon, 1 Sep 2008 17:26:10 -0300 Subject: Removes the agent when the adapter is freed, if it wasn't already done --- src/adapter.c | 3 +++ src/agent.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index a22112c8..98dc8ce2 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2747,6 +2747,9 @@ static void adapter_free(gpointer user_data) { struct adapter *adapter = user_data; + agent_destroy(adapter->agent, FALSE); + adapter->agent = NULL; + g_free(adapter->path); g_free(adapter); diff --git a/src/agent.c b/src/agent.c index 9870cb10..c35b2500 100644 --- a/src/agent.c +++ b/src/agent.c @@ -217,6 +217,9 @@ struct agent *agent_create(struct adapter *adapter, const char *name, int agent_destroy(struct agent *agent, gboolean exited) { + if (!agent) + return 0; + agent->exited = exited; agent_free(agent); return 0; -- cgit