mesh: Free allocated agent in mesh_remove_agent() 14/235114/1
authorInga Stotland <inga.stotland@intel.com>
Fri, 22 May 2020 00:34:53 +0000 (17:34 -0700)
committerAbhay Agarwal <ay.agarwal@samsung.com>
Thu, 28 May 2020 11:27:22 +0000 (16:57 +0530)
This adds previously missing call to free memory allocated
for agent structure.

Change-Id: Ibdb5336c5dfd52ad16b2718efea54692be76c72c
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
mesh/agent.c

index a06cc2b..4d20041 100644 (file)
@@ -188,9 +188,6 @@ static void agent_free(void *agent_data)
        mesh_agent_key_cb_t key_cb;
        mesh_agent_number_cb_t number_cb;
 
-       if (!l_queue_find(agents, simple_match, agent))
-               return;
-
        err = MESH_ERROR_DOES_NOT_EXIST;
 
        if (agent->req && agent->req->cb) {
@@ -228,15 +225,16 @@ static void agent_free(void *agent_data)
 
        l_free(agent->path);
        l_free(agent->owner);
+       l_free(agent);
 }
 
 void mesh_agent_remove(struct mesh_agent *agent)
 {
-       if (!agent || !l_queue_find(agents, simple_match, agent))
+       if (!agent)
                return;
 
-       agent_free(agent);
-       l_queue_remove(agents, agent);
+       if (l_queue_remove(agents, agent))
+               agent_free(agent);
 }
 
 void mesh_agent_cleanup(void)