From d3879bf88b97ca84b546452551f5742c85024dd7 Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Sat, 13 Jan 2007 17:49:15 +0000 Subject: [PATCH] When doing remove_last on a dlist, use the ->previous property well! SVN revision: 27948 --- legacy/ecore/src/lib/ecore/ecore_list.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/legacy/ecore/src/lib/ecore/ecore_list.c b/legacy/ecore/src/lib/ecore/ecore_list.c index 7de969f..6cfc1de 100644 --- a/legacy/ecore/src/lib/ecore/ecore_list.c +++ b/legacy/ecore/src/lib/ecore/ecore_list.c @@ -1431,10 +1431,28 @@ EAPI void * ecore_dlist_remove_last(Ecore_DList *list) { void *ret; + Ecore_List_Node *node; CHECK_PARAM_POINTER_RETURN("list", list, NULL); - ret = _ecore_list_remove_last(list); + if (ecore_list_is_empty(list)) + return NULL; + + node = list->last; + list->last = ECORE_LIST_NODE(ECORE_DLIST_NODE(node)->previous); + if (list->last) + list->last->next = NULL; + if (list->first == node) + list->first = NULL; + if (list->current == node) + list->current = NULL; + + ret = node->data; + ecore_list_node_destroy(node, NULL); + + list->nodes--; + if (list->index >= list->nodes) + list->index--; return ret; } -- 2.7.4