diff options
Diffstat (limited to 'lib/lists.c')
-rw-r--r-- | lib/lists.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/lists.c b/lib/lists.c index 58ffd230..d323a4b6 100644 --- a/lib/lists.c +++ b/lib/lists.c @@ -101,6 +101,25 @@ rem_node(node *n) } /** + * rem2_node - remove a node from a list, with cleanup + * @n: node to be removed + * + * Removes a node @n from the list it's linked in and resets its pointers to NULL. + * Useful if you want to distinguish between linked and unlinked nodes. + */ +LIST_INLINE void +rem2_node(node *n) +{ + node *z = n->prev; + node *x = n->next; + + z->next = x; + x->prev = z; + n->next = NULL; + n->prev = NULL; +} + +/** * replace_node - replace a node in a list with another one * @old: node to be removed * @new: node to be inserted |