summaryrefslogtreecommitdiffstats
path: root/lib/linklist.c
diff options
context:
space:
mode:
authorpaul <paul>2008-02-28 00:09:04 +0000
committerpaul <paul>2008-02-28 00:09:04 +0000
commit3fd5ece7f5923e1722a29990a92afc60e27ecf07 (patch)
tree6f6604e2c5fe60f4b139a9a6f410a7f9e755a572 /lib/linklist.c
parent3b98020d90eeb01eccf07b899585819ce7b6c8b1 (diff)
downloadquagga-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.c20
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;