From: Slava Monich <[email protected]>

The way it was done, leaked all the elements from the list before the one being 
removed:

==15760== 4,936 (12 direct, 4,924 indirect) bytes in 1 blocks are definitely 
lost in loss record 232 of 234
==15760==    at 0x483933C: malloc (vg_replace_malloc.c:296)
==15760==    by 0x48B7543: g_malloc (gmem.c:104)
==15760==    by 0x48D3E1F: g_slice_alloc (gslice.c:1016)
==15760==    by 0x48AB343: g_list_append (glist.c:232)
==15760==    by 0x51567: connman_agent_queue_message (agent.c:250)
==15760==    by 0x50803: __connman_agent_request_passphrase_input 
(agent-connman.c:483)
==15760==    by 0x4A21F: __connman_service_connect (service.c:6463)
==15760==    by 0x4AA0B: auto_connect_service (service.c:4004)
==15760==    by 0x4AB23: run_auto_connect (service.c:4027)
==15760==    by 0x48B0BE3: g_timeout_dispatch (gmain.c:4451)
==15760==    by 0x48AFB1F: g_main_dispatch (gmain.c:3066)
==15760==    by 0x48AFB1F: g_main_context_dispatch (gmain.c:3642)
==15760==    by 0x48AFE23: g_main_context_iterate.part.19 (gmain.c:3713)
==15760==    by 0x48B048B: g_main_loop_run (gmain.c:3906)
==15760==    by 0x149D3: main (main.c:761)
---
 src/agent.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/agent.c b/src/agent.c
index a340026..361a5e1 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -521,8 +521,8 @@ void connman_agent_cancel(void *user_context)
 
                                agent_request_free(request);
 
-                               agent->queue = list->next;
-                               list = g_list_delete_link(list, list);
+                               agent->queue = g_list_delete_link(agent->queue,
+                                                                       list);
                        } else
                                list = list->next;
                }
-- 
2.1.4

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to