diff options
-rw-r--r-- | include/session.h | 2 | ||||
-rw-r--r-- | src/session.c | 22 |
2 files changed, 11 insertions, 13 deletions
diff --git a/include/session.h b/include/session.h index 960b8391..e0a508be 100644 --- a/include/session.h +++ b/include/session.h @@ -76,7 +76,7 @@ int connman_session_policy_register(struct connman_session_policy *config); void connman_session_policy_unregister(struct connman_session_policy *config); GSList *connman_session_allowed_bearers_any(void); - +void connman_session_free_bearers(GSList *bearers); #ifdef __cplusplus } diff --git a/src/session.c b/src/session.c index bbd066ad..098516e2 100644 --- a/src/session.c +++ b/src/session.c @@ -330,6 +330,12 @@ static void cleanup_bearer(gpointer data, gpointer user_data) g_free(bearer); } +void connman_session_free_bearers(GSList *bearers) +{ + g_slist_foreach(bearers, cleanup_bearer, NULL); + g_slist_free(bearers); +} + static GSList *session_parse_allowed_bearers(DBusMessageIter *iter) { struct connman_session_bearer *bearer; @@ -345,9 +351,7 @@ static GSList *session_parse_allowed_bearers(DBusMessageIter *iter) bearer = g_try_new0(struct connman_session_bearer, 1); if (bearer == NULL) { - g_slist_foreach(list, cleanup_bearer, NULL); - g_slist_free(list); - + connman_session_free_bearers(list); return NULL; } @@ -752,9 +756,7 @@ static void cleanup_session(gpointer user_data) } destroy_policy_config(session); - g_slist_foreach(info->config.allowed_bearers, cleanup_bearer, NULL); - g_slist_free(info->config.allowed_bearers); - + connman_session_free_bearers(session->info->config.allowed_bearers); g_free(session->owner); g_free(session->session_path); g_free(session->notify_path); @@ -1321,10 +1323,7 @@ static DBusMessage *change_session(DBusConnection *conn, if (g_str_equal(name, "AllowedBearers") == TRUE) { allowed_bearers = session_parse_allowed_bearers(&value); - g_slist_foreach(info->config.allowed_bearers, - cleanup_bearer, NULL); - g_slist_free(info->config.allowed_bearers); - + connman_session_free_bearers(info->config.allowed_bearers); if (allowed_bearers == NULL) { allowed_bearers = connman_session_allowed_bearers_any(); @@ -1616,8 +1615,7 @@ err: g_free(session_path); - g_slist_foreach(allowed_bearers, cleanup_bearer, NULL); - g_slist_free(allowed_bearers); + connman_session_free_bearers(allowed_bearers); return err; } |