Fix: do not leak memory, cleanup the topic list
authorDenis Kenzior <denkenz@gmail.com>
Tue, 15 Sep 2009 19:35:09 +0000 (14:35 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Wed, 16 Sep 2009 09:53:41 +0000 (04:53 -0500)
src/cbs.c

index 10ba5b2..efc8d3f 100644 (file)
--- a/src/cbs.c
+++ b/src/cbs.c
@@ -420,6 +420,18 @@ static void cbs_unregister(struct ofono_atom *atom)
        g_dbus_unregister_interface(conn, path, CBS_MANAGER_INTERFACE);
        ofono_modem_remove_interface(modem, CBS_MANAGER_INTERFACE);
 
+       if (cbs->topics) {
+               g_slist_foreach(cbs->topics, (GFunc)g_free, NULL);
+               g_slist_free(cbs->topics);
+               cbs->topics = NULL;
+       }
+
+       if (cbs->new_topics) {
+               g_slist_foreach(cbs->new_topics, (GFunc)g_free, NULL);
+               g_slist_free(cbs->new_topics);
+               cbs->new_topics = NULL;
+       }
+
        if (cbs->sim_watch) {
                if (cbs->imsi_watch) {
                        ofono_sim_remove_ready_watch(cbs->sim,