a = g_list_remove(a, b)
#define DD_LIST_FOREACH(head, elem, node) \
for (elem = head; elem && ((node = elem->data) != NULL); elem = elem->next, node = NULL)
+#define DD_LIST_FOREACH_SAFE(head, elem, elem_next, node) \
+ for (elem = head, elem_next=g_list_next(elem), node = NULL; \
+ elem && ((node = elem->data) != NULL); \
+ elem = elem_next, elem_next = g_list_next(elem), node=NULL)
#endif
#define FEEDBACK_DATA_DIR FEEDBACK_SYS_SHARE"/feedback"
{
GDBusConnection *conn;
struct feedback_restart_callback *callback;
- dd_list *elem;
+ dd_list *elem, *next;
if (!func)
return -EINVAL;
//LCOV_EXCL_STOP
}
- DD_LIST_FOREACH(callback_list, elem, callback) {
+ DD_LIST_FOREACH_SAFE(callback_list, elem, next, callback) {
if (callback->func != func)
continue;
if (callback->feedback_id > 0)