diff options
author | paul <paul> | 2008-02-28 00:09:04 +0000 |
---|---|---|
committer | paul <paul> | 2008-02-28 00:09:04 +0000 |
commit | 3fd5ece7f5923e1722a29990a92afc60e27ecf07 (patch) | |
tree | 6f6604e2c5fe60f4b139a9a6f410a7f9e755a572 /lib/linklist.c | |
parent | 3b98020d90eeb01eccf07b899585819ce7b6c8b1 (diff) | |
download | quagga-3fd5ece7f5923e1722a29990a92afc60e27ecf07.tar.bz2 quagga-3fd5ece7f5923e1722a29990a92afc60e27ecf07.tar.xz |
[lib/linklist] Enforce "nodes must have data" invariant more rigorously
2008-02-28 Paul Jakma <paul.jakma@sun.com>
* linklist.c: This implementation expects that the data pointer not
be null, e.g. listgetdata() asserts this. The list add methods
don't apply the same sanity check.
Noted by Jim Carlson in bug #437.
Diffstat (limited to 'lib/linklist.c')
-rw-r--r-- | lib/linklist.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/linklist.c b/lib/linklist.c index 983da2d1..a16e9e18 100644 --- a/lib/linklist.c +++ b/lib/linklist.c @@ -65,7 +65,9 @@ void listnode_add (struct list *list, void *val) { struct listnode *node; - + + assert (val != NULL); + node = listnode_new (); node->prev = list->tail; @@ -91,7 +93,9 @@ listnode_add_sort (struct list *list, void *val) { struct listnode *n; struct listnode *new; - + + assert (val != NULL); + new = listnode_new (); new->data = val; @@ -130,7 +134,9 @@ void listnode_add_after (struct list *list, struct listnode *pp, void *val) { struct listnode *nn; - + + assert (val != NULL); + nn = listnode_new (); nn->data = val; @@ -266,7 +272,9 @@ void list_add_node_prev (struct list *list, struct listnode *current, void *val) { struct listnode *node; - + + assert (val != NULL); + node = listnode_new (); node->next = current; node->data = val; @@ -287,7 +295,9 @@ void list_add_node_next (struct list *list, struct listnode *current, void *val) { struct listnode *node; - + + assert (val != NULL); + node = listnode_new (); node->prev = current; node->data = val; |