mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Birdlib: Do cleanups after remove/free
To avoid byzantine behavior in case of some errors, linked lists are cleared after rem_node() and resource headers are cleared after rfree().
This commit is contained in:
19
lib/lists.c
19
lib/lists.c
@@ -88,7 +88,7 @@ insert_node(node *n, node *after)
|
||||
* rem_node - remove a node from a list
|
||||
* @n: node to be removed
|
||||
*
|
||||
* Removes a node @n from the list it's linked in.
|
||||
* Removes a node @n from the list it's linked in. Afterwards, node @n is cleared.
|
||||
*/
|
||||
LIST_INLINE void
|
||||
rem_node(node *n)
|
||||
@@ -96,23 +96,6 @@ rem_node(node *n)
|
||||
node *z = n->prev;
|
||||
node *x = n->next;
|
||||
|
||||
z->next = x;
|
||||
x->prev = z;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
Reference in New Issue
Block a user