ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/libio/misc/list.c
(Generate patch)

Comparing ircd-hybrid/libio/misc/list.c (file contents):
Revision 500 by adx, Wed Oct 5 20:36:04 2005 UTC vs.
Revision 501 by michael, Thu Mar 2 10:40:42 2006 UTC

# Line 24 | Line 24
24  
25   #include "stdinc.h"
26  
27 < static BlockHeap *dnode_heap;
27 > static BlockHeap *dnode_heap = NULL;
28  
29   /* init_dlink_nodes()
30   *
# Line 47 | Line 47 | init_dlink_nodes(void)
47   dlink_node *
48   make_dlink_node(void)
49   {
50 <  dlink_node *lp = BlockHeapAlloc(dnode_heap);
51 <
52 <  return(lp);
50 >  return BlockHeapAlloc(dnode_heap);
51   }
52  
53   /* free_dlink_node()
# Line 83 | Line 81 | dlinkAdd(void *data, dlink_node *m, dlin
81      list->tail = m;
82  
83    list->head = m;
84 <  list->length++;
84 >  ++list->length;
85   }
86  
87   void
# Line 99 | Line 97 | dlinkAddBefore(dlink_node *b, void *data
97      m->prev = b->prev;
98      b->prev = m;
99      m->next = b;
100 <    list->length++;
100 >    ++list->length;
101    }
102   }
103  
# Line 116 | Line 114 | dlinkAddTail(void *data, dlink_node *m,
114      list->head = m;
115  
116    list->tail = m;
117 <  list->length++;
117 >  ++list->length;
118   }
119  
120   /* Execution profiles show that this function is called the most
# Line 143 | Line 141 | dlinkDelete(dlink_node *m, dlink_list *l
141  
142    /* Set this to NULL does matter */
143    m->next = m->prev = NULL;
144 <  list->length--;
144 >  assert(list->length > 0);
145 >  --list->length;
146   }
147  
148   /*
# Line 159 | Line 158 | dlinkFind(dlink_list *list, void *data)
158    dlink_node *ptr;
159  
160    DLINK_FOREACH(ptr, list->head)
162  {
161      if (ptr->data == data)
162        return ptr;
165  }
163  
164    return NULL;
165   }
# Line 203 | Line 200 | dlinkMoveList(dlink_list *from, dlink_li
200   dlink_node *
201   dlinkFindDelete(dlink_list *list, void *data)
202   {
203 <  dlink_node *m;
203 >  dlink_node *m = NULL;
204  
205    DLINK_FOREACH(m, list->head)
206    {
207      if (m->data == data)
208      {
209 <      if (m->next)
213 <        m->next->prev = m->prev;
214 <      else
215 <      {
216 <        assert(list->tail == m);
217 <        list->tail = m->prev;
218 <      }
219 <      if (m->prev)
220 <        m->prev->next = m->next;
221 <      else
222 <      {
223 <        assert(list->head == m);
224 <        list->head = m->next;
225 <      }
226 <      /* Set this to NULL does matter */
227 <      m->next = m->prev = NULL;
228 <      list->length--;
229 <
209 >      dlinkDelete(m, list);
210        return m;
211      }
212    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines