From 085304dc09bad042df987d9fb62272afd993f7fe Mon Sep 17 00:00:00 2001 From: Stephen Worley Date: Tue, 14 May 2019 14:31:17 -0700 Subject: [PATCH] zebra: RB_FIND then RB_REMOVE nhg_connected Can't RM_REMOVE directly with a key, you need to actually pass the data to be removed. So, lookup with a key first to find the node, then remove it. Signed-off-by: Stephen Worley --- zebra/zebra_nhg.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c index e5c4520c70..ebddeb3f95 100644 --- a/zebra/zebra_nhg.c +++ b/zebra/zebra_nhg.c @@ -103,13 +103,16 @@ void nhg_connected_head_del(struct nhg_connected_head *head, struct nhg_hash_entry *depend) { struct nhg_connected lookup = {}; - struct nhg_connected *removed = NULL; + struct nhg_connected *remove = NULL; lookup.nhe = depend; - removed = RB_REMOVE(nhg_connected_head, head, &lookup); + /* Lookup to find the element, then remove it */ + remove = RB_FIND(nhg_connected_head, head, &lookup); + remove = RB_REMOVE(nhg_connected_head, head, remove); - nhg_connected_free(removed); + if (remove) + nhg_connected_free(remove); } void nhg_connected_head_add(struct nhg_connected_head *head, -- 2.39.5