This patch fixes this:
GLib-CRITICAL **: g_sequence_sort_changed: assertion `!is_end (iter)' failed

---
Hi,

It seems that glib prints out this message when there is less than 1 sequence 
iter to sort.
Looks awkward, but checking the length of sequence fixes the issue (we sort it 
only if it owns >= 2 items)

@Patrik: I am not fully sure about the part in 
__connman_service_set_favorite(): should service_schedule_changed() be called 
even if sequence was not resorted?

Please review,

Tomasz 

 src/service.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/service.c b/src/service.c
index 8f97c09..9221afa 100644
--- a/src/service.c
+++ b/src/service.c
@@ -4198,8 +4198,10 @@ int __connman_service_set_favorite(struct 
connman_service *service,
 
        favorite_changed(service);
 
-       g_sequence_sort_changed(iter, service_compare, NULL);
-       service_schedule_changed();
+       if (g_sequence_get_length(service_list) > 1) {
+               g_sequence_sort_changed(iter, service_compare, NULL);
+               service_schedule_changed();
+       }
 
        __connman_connection_update_gateway();
 
@@ -4577,7 +4579,7 @@ static int service_indicate_state(struct connman_service 
*service)
                service->error = CONNMAN_SERVICE_ERROR_UNKNOWN;
 
        iter = g_hash_table_lookup(service_hash, service->identifier);
-       if (iter != NULL) {
+       if (iter != NULL && g_sequence_get_length(service_list) > 1) {
                g_sequence_sort_changed(iter, service_compare, NULL);
                service_schedule_changed();
        }
@@ -5293,7 +5295,7 @@ static int service_register(struct connman_service 
*service)
                                                        NULL, service, NULL);
 
        iter = g_hash_table_lookup(service_hash, service->identifier);
-       if (iter != NULL) {
+       if (iter != NULL && g_sequence_get_length(service_list) > 1) {
                g_sequence_sort_changed(iter, service_compare, NULL);
                service_schedule_changed();
        }
@@ -5594,7 +5596,7 @@ void __connman_service_update_ordering(void)
        GSequenceIter *iter;
 
        iter = g_sequence_get_begin_iter(service_list);
-       if (iter != NULL)
+       if (iter != NULL && g_sequence_get_length(service_list) > 1)
                g_sequence_sort_changed(iter, service_compare, NULL);
 }
 
@@ -5696,7 +5698,7 @@ static void update_from_network(struct connman_service 
*service,
                service->network = connman_network_ref(network);
 
        iter = g_hash_table_lookup(service_hash, service->identifier);
-       if (iter != NULL) {
+       if (iter != NULL && g_sequence_get_length(service_list) > 1) {
                g_sequence_sort_changed(iter, service_compare, NULL);
                service_schedule_changed();
        }
@@ -5862,7 +5864,7 @@ roaming:
 sorting:
        if (need_sort == TRUE) {
                iter = g_hash_table_lookup(service_hash, service->identifier);
-               if (iter != NULL) {
+               if (iter != NULL && g_sequence_get_length(service_list) > 1) {
                        g_sequence_sort_changed(iter, service_compare, NULL);
                        service_schedule_changed();
                }
-- 
1.7.8.5

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

Reply via email to