]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/openbsd-tree.c
isisd: implemented the 'sequence-number-skipped' notification
[mirror_frr.git] / lib / openbsd-tree.c
index 5d77ac2a4713203bdd455ad03429237bb1dfa530..eadef9902ba5df272f51354a4cf1b3db5e259f38 100644 (file)
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 
 #include <lib/openbsd-tree.h>
@@ -215,12 +219,8 @@ static inline void rbe_remove_color(const struct rb_type *t,
 {
        struct rb_entry *tmp;
 
-       /* Silence clang possible NULL deference warning. */
-       if (parent == NULL)
-               return;
-
        while ((rbe == NULL || RBE_COLOR(rbe) == RB_BLACK)
-              && rbe != RBH_ROOT(rbt)) {
+              && rbe != RBH_ROOT(rbt) && parent) {
                if (RBE_LEFT(parent) == rbe) {
                        tmp = RBE_RIGHT(parent);
                        if (RBE_COLOR(tmp) == RB_RED) {
@@ -345,7 +345,7 @@ rbe_remove(const struct rb_type *t, struct rbt_tree *rbt, struct rb_entry *rbe)
                        else
                                RBE_RIGHT(tmp) = rbe;
 
-                       rbe_if_augment(t, parent);
+                       rbe_if_augment(t, tmp);
                } else
                        RBH_ROOT(rbt) = rbe;