]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - buffer_tree.c
Merge branch 't/misc_cleanups'
[paraslash.git] / buffer_tree.c
index bb854124c6be6089f604815473755af783ceb5e8..b1eeb0363e3741d288656e8c5cea5aa9d186c0ab 100644 (file)
@@ -386,7 +386,8 @@ void btr_add_output(char *buf, size_t size, struct btr_node *btrn)
 {
        struct btr_buffer *btrb;
 
-       assert(size != 0);
+       if (size == 0)
+               return;
        if (list_empty(&btrn->children)) {
                free(buf);
                return;
@@ -415,7 +416,8 @@ void btr_add_output_dont_free(const char *buf, size_t size, struct btr_node *btr
 {
        struct btr_buffer *btrb;
 
-       assert(size != 0);
+       if (size == 0)
+               return;
        if (list_empty(&btrn->children))
                return;
        btrb = new_btrb((char *)buf, size);
@@ -442,7 +444,8 @@ void btr_add_output_pool(struct btr_pool *btrp, size_t size,
        char *buf;
        size_t avail;
 
-       assert(size != 0);
+       if (size == 0)
+               return;
        if (list_empty(&btrn->children))
                return;
        avail = btr_pool_get_buffer(btrp, &buf);
@@ -541,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)
 {
@@ -853,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;
@@ -1227,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;