diff options
author | Paul Jakma <paul.jakma@sun.com> | 2008-02-28 00:09:04 +0000 |
---|---|---|
committer | Paul Jakma <paul.jakma@sun.com> | 2008-02-28 00:09:04 +0000 |
commit | 5f56808431778fe8878ea8ea94225cca08884b48 (patch) | |
tree | 41027ecf7a18a787ea3109a76d5ec83ebf49a45e | |
parent | 20e5ff0a8893ffad6d31739d68d224931c4a7992 (diff) |
[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.
-rw-r--r-- | lib/ChangeLog | 8 | ||||
-rw-r--r-- | lib/linklist.c | 20 |
2 files changed, 23 insertions, 5 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog index 2263c03c..613a6fcb 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,11 @@ +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. + 2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * zebra.h: Revert previous change, no need to include <net/if_media.h> 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; |