Diff between 16c3330a1591a0c9ec07a3e1c04e3c5c15b5f9b2 and aa5f3db70652ad290c4e423828d89d167b7feca9
Changed Files
| File | Additions | Deletions | Status |
| src/adapter.c | +9 | -0 | modified |
Full Patch
diff --git a/src/adapter.c b/src/adapter.c
index cc4f43e..691b963 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2507,6 +2507,15 @@ static void set_mode_complete(struct btd_adapter *adapter)
DBG("");
+ /*
+ * g_slist_free is not called after g_slist_foreach because the list is
+ * updated using g_slist_remove in session_remove which is called by
+ * session_free, which is called for each element by g_slist_foreach.
+ */
+ if (adapter->mode == MODE_OFF)
+ g_slist_foreach(adapter->mode_sessions, (GFunc) session_free,
+ NULL);
+
if (adapter->pending_mode == NULL)
return;