X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=buffer_tree.c;h=84dc933a037c7552db6fdd7559ea096c2f892ae1;hp=9ae4d34c9fb6dfd38676e83416a0bcf6d244f25a;hb=072391fccbd052334dbd836d451f2be0a74a0685;hpb=3f97ae6c928596a15fc4e7e0b0fbf754347165f8 diff --git a/buffer_tree.c b/buffer_tree.c index 9ae4d34c..84dc933a 100644 --- a/buffer_tree.c +++ b/buffer_tree.c @@ -835,7 +835,7 @@ size_t btr_get_input_queue_size(struct btr_node *btrn) /** * Remove a node from the buffer tree, reconnecting parent and children. * - * \param btrn The node to splice out. + * \param btrnp The node to splice out. * * This function is used by buffer tree nodes that do not exist during the * whole lifetime of the buffer tree. Unlike btr_remove_node(), calling @@ -843,9 +843,9 @@ size_t btr_get_input_queue_size(struct btr_node *btrn) * but reconnects the buffer tree by making all child nodes of \a btrn children * of the parent of \a btrn. */ -void btr_splice_out_node(struct btr_node *btrn) +void btr_splice_out_node(struct btr_node **btrnp) { - struct btr_node *ch, *tmp; + struct btr_node *btrn = *btrnp, *ch, *tmp; assert(btrn); PARA_NOTICE_LOG("splicing out %s\n", btrn->name); @@ -858,9 +858,11 @@ 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; + *btrnp = NULL; } /**