mu: Update container's pointer to last sibling when converting from a list

This commit is contained in:
Jakub Sitnicki
2014-07-07 06:24:01 +02:00
parent 97101f1f82
commit 619fb86885

View File

@ -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;
} }