From f3e8d59d5c584f5925a8b23919aaa5b5c954cf85 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Mon, 15 Nov 2004 18:35:23 +0000 Subject: use realloc for makeListNodesArray git-svn-id: https://svn.musicpd.org/mpd/trunk@2676 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/list.c | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/list.c b/src/list.c index 45b19a93a..a777562d4 100644 --- a/src/list.c +++ b/src/list.c @@ -31,7 +31,8 @@ void makeListNodesArray(List * list) { if(!list->numberOfNodes) return; - list->nodesArray = malloc(sizeof(ListNode *)*list->numberOfNodes); + list->nodesArray = realloc(list->nodesArray, + sizeof(ListNode *)*list->numberOfNodes); for(i=0;inumberOfNodes;i++) { list->nodesArray[i] = node; @@ -71,41 +72,40 @@ ListNode * insertInListBeforeNode(List * list, ListNode * beforeNode, char * node = malloc(sizeof(ListNode)); assert(node!=NULL); - if(beforeNode==NULL) node = insertInList(list, key, data); - else { - node->nextNode = beforeNode; - if(beforeNode==list->firstNode) { - if(list->firstNode==NULL) { - assert(list->lastNode==NULL); - list->lastNode = node; - } - else { - assert(list->lastNode!=NULL); - assert(list->lastNode->nextNode==NULL); - list->firstNode->prevNode = node; - } - node->prevNode = NULL; - list->firstNode = node; + node->nextNode = beforeNode; + if(beforeNode==list->firstNode) { + if(list->firstNode==NULL) { + assert(list->lastNode==NULL); + list->lastNode = node; } else { + assert(list->lastNode!=NULL); + assert(list->lastNode->nextNode==NULL); + list->firstNode->prevNode = node; + } + node->prevNode = NULL; + list->firstNode = node; + } + else { + if(beforeNode) { node->prevNode = beforeNode->prevNode; - if(node->prevNode) { - node->prevNode->nextNode = node; - } beforeNode->prevNode = node; } + else { + node->prevNode = list->lastNode; + list->lastNode = node; + } + node->prevNode->nextNode = node; + } - if(list->strdupKeys) node->key = strdup(key); - else node->key = key; + if(list->strdupKeys) node->key = strdup(key); + else node->key = key; - assert(node->key!=NULL); + node->data = data; - node->data = data; - - list->numberOfNodes++; - } + list->numberOfNodes++; - freeListNodesArray(list); + /*freeListNodesArray(list);*/ if(list->sorted) makeListNodesArray(list); return node; -- cgit v1.2.3