mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
list: check for empty list before insert
We can't insert an empty list.
This commit is contained in:
parent
47fc2020c0
commit
964be84e1c
3 changed files with 7 additions and 7 deletions
|
|
@ -1 +1 @@
|
||||||
Subproject commit 42b4529c4caac63d521ea343d2029f59b47929b6
|
Subproject commit b50bd414ab497c461fcb2b25b545e59232dac7d1
|
||||||
|
|
@ -95,8 +95,7 @@ spa_hook_list_isolate(struct spa_hook_list *list,
|
||||||
{
|
{
|
||||||
/* init save list and move hooks to it */
|
/* init save list and move hooks to it */
|
||||||
spa_hook_list_init(save);
|
spa_hook_list_init(save);
|
||||||
if (!spa_list_is_empty(&list->list))
|
spa_list_insert_list(&save->list, &list->list);
|
||||||
spa_list_insert_list(&save->list, &list->list);
|
|
||||||
/* init hooks and add single hook */
|
/* init hooks and add single hook */
|
||||||
spa_hook_list_init(list);
|
spa_hook_list_init(list);
|
||||||
spa_hook_list_append(list, hook, funcs, data);
|
spa_hook_list_append(list, hook, funcs, data);
|
||||||
|
|
@ -106,8 +105,7 @@ static inline void
|
||||||
spa_hook_list_join(struct spa_hook_list *list,
|
spa_hook_list_join(struct spa_hook_list *list,
|
||||||
struct spa_hook_list *save)
|
struct spa_hook_list *save)
|
||||||
{
|
{
|
||||||
if (!spa_list_is_empty(&save->list))
|
spa_list_insert_list(&list->list, &save->list);
|
||||||
spa_list_insert_list(&list->list, &save->list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define spa_hook_call(hook,type,method,vers,...) \
|
#define spa_hook_call(hook,type,method,vers,...) \
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ static inline void spa_list_init(struct spa_list *list)
|
||||||
*list = SPA_LIST_INIT(list);
|
*list = SPA_LIST_INIT(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define spa_list_is_empty(l) ((l)->next == (l))
|
||||||
|
|
||||||
static inline void spa_list_insert(struct spa_list *list, struct spa_list *elem)
|
static inline void spa_list_insert(struct spa_list *list, struct spa_list *elem)
|
||||||
{
|
{
|
||||||
elem->prev = list;
|
elem->prev = list;
|
||||||
|
|
@ -51,6 +53,8 @@ static inline void spa_list_insert(struct spa_list *list, struct spa_list *elem)
|
||||||
|
|
||||||
static inline void spa_list_insert_list(struct spa_list *list, struct spa_list *other)
|
static inline void spa_list_insert_list(struct spa_list *list, struct spa_list *other)
|
||||||
{
|
{
|
||||||
|
if (spa_list_is_empty(other))
|
||||||
|
return;
|
||||||
other->next->prev = list;
|
other->next->prev = list;
|
||||||
other->prev->next = list->next;
|
other->prev->next = list->next;
|
||||||
list->next->prev = other->prev;
|
list->next->prev = other->prev;
|
||||||
|
|
@ -63,8 +67,6 @@ static inline void spa_list_remove(struct spa_list *elem)
|
||||||
elem->next->prev = elem->prev;
|
elem->next->prev = elem->prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define spa_list_is_empty(l) ((l)->next == (l))
|
|
||||||
|
|
||||||
#define spa_list_first(head, type, member) \
|
#define spa_list_first(head, type, member) \
|
||||||
SPA_CONTAINER_OF((head)->next, type, member)
|
SPA_CONTAINER_OF((head)->next, type, member)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue