Created a helper function to sort service list, to shorten the code
slightly and to ensure null pointer check is always done before using
the list pointer.
---
 src/service.c | 41 ++++++++++++++---------------------------
 1 file changed, 14 insertions(+), 27 deletions(-)

diff --git a/src/service.c b/src/service.c
index 6a70777..d586147 100644
--- a/src/service.c
+++ b/src/service.c
@@ -4729,6 +4729,14 @@ static gint service_compare(gconstpointer a, 
gconstpointer b)
        return g_strcmp0(service_a->name, service_b->name);
 }
 
+static void service_list_sort(void)
+{
+       if (service_list && service_list->next) {
+               service_list = g_list_sort(service_list, service_compare);
+               service_schedule_changed();
+       }
+}
+
 /**
  * connman_service_get_type:
  * @service: service structure
@@ -4896,11 +4904,7 @@ int __connman_service_set_favorite_delayed(struct 
connman_service *service,
 
        if (!delay_ordering) {
 
-               if (service_list->next) {
-                       service_list = g_list_sort(service_list,
-                                                       service_compare);
-                       service_schedule_changed();
-               }
+               service_list_sort();
 
                __connman_connection_update_gateway();
        }
@@ -5449,10 +5453,7 @@ static int service_indicate_state(struct connman_service 
*service)
        } else
                set_error(service, CONNMAN_SERVICE_ERROR_UNKNOWN);
 
-       if (service_list->next) {
-               service_list = g_list_sort(service_list, service_compare);
-               service_schedule_changed();
-       }
+       service_list_sort();
 
        __connman_connection_update_gateway();
 
@@ -6159,11 +6160,7 @@ int __connman_service_provision_changed(const char 
*ident)
        if (services_dirty) {
                services_dirty = false;
 
-               if (service_list->next) {
-                       service_list = g_list_sort(service_list,
-                                                       service_compare);
-                       service_schedule_changed();
-               }
+               service_list_sort();
 
                __connman_connection_update_gateway();
        }
@@ -6237,10 +6234,7 @@ static int service_register(struct connman_service 
*service)
                                        service_methods, service_signals,
                                                        NULL, service, NULL);
 
-       if (service_list->next) {
-               service_list = g_list_sort(service_list, service_compare);
-               service_schedule_changed();
-       }
+       service_list_sort();
 
        __connman_connection_update_gateway();
 
@@ -6669,10 +6663,7 @@ static void update_from_network(struct connman_service 
*service,
        if (!service->network)
                service->network = connman_network_ref(network);
 
-       if (service_list->next) {
-               service_list = g_list_sort(service_list, service_compare);
-               service_schedule_changed();
-       }
+       service_list_sort();
 }
 
 /**
@@ -6834,11 +6825,7 @@ roaming:
 
 sorting:
        if (need_sort) {
-               if (service_list->next) {
-                       service_list = g_list_sort(service_list,
-                                                       service_compare);
-                       service_schedule_changed();
-               }
+               service_list_sort();
        }
 }
 
-- 
1.8.5.3

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to