Change device removal handling
authorMarcel Holtmann <marcel@holtmann.org>
Sat, 11 Oct 2008 07:24:54 +0000 (09:24 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 11 Oct 2008 07:24:54 +0000 (09:24 +0200)
plugins/hal.c

index bda2f8c..12d67ef 100644 (file)
@@ -168,6 +168,7 @@ static void device_added(LibHalContext *ctx, const char *udi)
 
 static void device_removed(LibHalContext *ctx, const char *udi)
 {
+       struct connman_element *removal = NULL;
        GSList *list;
        gchar *name;
 
@@ -181,14 +182,18 @@ static void device_removed(LibHalContext *ctx, const char *udi)
                struct connman_element *element = list->data;
 
                if (g_str_equal(element->name, name) == TRUE) {
-                       element_list = g_slist_remove(element_list, element);
-
-                       connman_element_unregister(element);
-                       connman_element_unref(element);
+                       removal = element;
                        break;
                }
        }
 
+       if (removal != NULL) {
+               element_list = g_slist_remove(element_list, removal);
+
+               connman_element_unregister(removal);
+               connman_element_unref(removal);
+       }
+
        g_static_mutex_unlock(&element_mutex);
 
        g_free(name);