]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - buffer_tree.c
Merge branch 't/misc_cleanups'
[paraslash.git] / buffer_tree.c
index f0a7b224f9fad39fd8036d37eedbf619e3ca585b..b1eeb0363e3741d288656e8c5cea5aa9d186c0ab 100644 (file)
@@ -544,14 +544,16 @@ static bool btr_no_children(struct btr_node *btrn)
 }
 
 /**
- * Find out whether a node is an orphan node.
+ * Find out whether a node is an orphan.
  *
  * \param btrn The buffer tree node.
  *
  * \return True if \a btrn has no parent.
  *
- * This function will always return true for the root node.  However in case
- * nodes have been removed from the tree, other nodes may become orphans too.
+ * This function returns true for the root node and false for any other node.
+ *
+ * After a (non-leaf) node was removed removed from the tree, the function
+ * returns true for all child nodes.
  */
 bool btr_no_parent(struct btr_node *btrn)
 {
@@ -856,6 +858,8 @@ void btr_splice_out_node(struct btr_node *btrn)
                ch->parent = btrn->parent;
                if (btrn->parent)
                        list_move(&ch->node, &btrn->parent->children);
+               else
+                       list_del(&ch->node);
        }
        assert(list_empty(&btrn->children));
        btrn->parent = NULL;
@@ -1230,6 +1234,16 @@ void btr_get_node_start(struct btr_node *btrn, struct timeval *tv)
        *tv = btrn->start;
 }
 
+/**
+ * Get the parent node of a buffer tree node.
+ *
+ * \param btrn The node whose parent should be returned.
+ *
+ * \a btrn must not be \p NULL.
+ *
+ * \return The parent of \a btrn, or \p NULL if \a btrn is the
+ * root node of the buffer tree.
+ */
 struct btr_node *btr_parent(struct btr_node *btrn)
 {
        return btrn->parent;