diff options
Diffstat (limited to 'lib/lists.c')
-rw-r--r-- | lib/lists.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/lib/lists.c b/lib/lists.c index 2f92defe..cabfddba 100644 --- a/lib/lists.c +++ b/lib/lists.c @@ -35,10 +35,10 @@ check_list(list *l, node *n) if (!l) { ASSERT_DIE(n); + ASSERT_DIE(n->prev); node *nn = n; - while (nn->prev) - nn = nn->prev; + do { nn = nn->prev; } while (nn->prev); l = SKIP_BACK(list, head_node, nn); } @@ -61,7 +61,7 @@ check_list(list *l, node *n) } ASSERT_DIE(cur == &(l->tail_node)); - ASSERT_DIE(!n || (seen == 1) || (n == &l->head_node) || (n == &l->tail_node)); + ASSERT_DIE(!n || (seen == 1)); return 1; } @@ -110,15 +110,6 @@ add_head(list *l, node *n) l->head = n; } -LIST_INLINE void -self_link(node *n) -{ - ASSUME(n->prev == NULL); - ASSUME(n->next == NULL); - - n->prev = n->next = n; -} - /** * insert_node - insert a node to a list * @n: a new list node @@ -130,7 +121,7 @@ self_link(node *n) LIST_INLINE void insert_node(node *n, node *after) { - EXPENSIVE_CHECK(check_list(NULL, after)); + EXPENSIVE_CHECK((after->prev == NULL) || check_list(NULL, after)); ASSUME(n->prev == NULL); ASSUME(n->next == NULL); @@ -151,7 +142,7 @@ insert_node(node *n, node *after) LIST_INLINE void rem_node(node *n) { - EXPENSIVE_CHECK((n == n->prev) && (n == n->next) || check_list(NULL, n)); + EXPENSIVE_CHECK((n->prev == n) && (n->next == n) || check_list(NULL, n)); node *z = n->prev; node *x = n->next; @@ -208,9 +199,6 @@ add_tail_list(list *to, list *l) EXPENSIVE_CHECK(check_list(to, NULL)); EXPENSIVE_CHECK(check_list(l, NULL)); - ASSERT_DIE(l->head->prev == &l->head_node); - ASSERT_DIE(l->tail->next == &l->tail_node); - node *p = to->tail; node *q = l->head; |