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