mu: Update container's pointer to last sibling when converting from a list
This commit is contained in:
@ -308,17 +308,28 @@ mu_container_to_list (MuContainer *c)
|
|||||||
return lst;
|
return lst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gpointer
|
||||||
|
list_last_data (GSList *lst)
|
||||||
|
{
|
||||||
|
GSList *tail;
|
||||||
|
|
||||||
|
tail = g_slist_last (lst);
|
||||||
|
|
||||||
|
return tail->data;
|
||||||
|
}
|
||||||
|
|
||||||
static MuContainer*
|
static MuContainer*
|
||||||
mu_container_from_list (GSList *lst)
|
mu_container_from_list (GSList *lst)
|
||||||
{
|
{
|
||||||
MuContainer *c, *cur;
|
MuContainer *c, *cur, *tail;
|
||||||
|
|
||||||
if (!lst)
|
if (!lst)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
tail = list_last_data (lst);
|
||||||
for (c = cur = (MuContainer*)lst->data; cur; lst = g_slist_next(lst)) {
|
for (c = cur = (MuContainer*)lst->data; cur; lst = g_slist_next(lst)) {
|
||||||
cur->next = lst ? (MuContainer*)lst->data : NULL;
|
cur->next = lst ? (MuContainer*)lst->data : NULL;
|
||||||
|
cur->last = tail;
|
||||||
cur=cur->next;
|
cur=cur->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user