summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
74145aa)
This changes btr_splice_out_node() to take a pointer to a btrn, just
like btr_remove_node(). This allows to set the variable to NULL after
the node has been spliced out. The callers are updated accordingly.
bool inplace = btr_inplace_ok(btrn);
if (pad->amp == 0) { /* no amplification */
bool inplace = btr_inplace_ok(btrn);
if (pad->amp == 0) { /* no amplification */
- btr_splice_out_node(btrn);
+ btr_splice_out_node(&fn->btrn);
return -E_AMP_ZERO_AMP;
}
next_buffer:
return -E_AMP_ZERO_AMP;
}
next_buffer:
/**
* Remove a node from the buffer tree, reconnecting parent and children.
*
/**
* 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
*
* 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
* but reconnects the buffer tree by making all child nodes of \a btrn children
* of the parent of \a 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);
assert(btrn);
PARA_NOTICE_LOG("splicing out %s\n", btrn->name);
list_del(&ch->node);
}
assert(list_empty(&btrn->children));
list_del(&ch->node);
}
assert(list_empty(&btrn->children));
size_t btr_next_buffer_omit(struct btr_node *btrn, size_t omit, char **bufp);
void btr_consume(struct btr_node *btrn, size_t numbytes);
int btr_exec_up(struct btr_node *btrn, const char *command, char **value_result);
size_t btr_next_buffer_omit(struct btr_node *btrn, size_t omit, char **bufp);
void btr_consume(struct btr_node *btrn, size_t numbytes);
int btr_exec_up(struct btr_node *btrn, const char *command, char **value_result);
-void btr_splice_out_node(struct btr_node *btrn);
+void btr_splice_out_node(struct btr_node **btrnp);
void btr_pushdown(struct btr_node *btrn);
void *btr_context(struct btr_node *btrn);
void btr_merge(struct btr_node *btrn, size_t dest_size);
void btr_pushdown(struct btr_node *btrn);
void *btr_context(struct btr_node *btrn);
void btr_merge(struct btr_node *btrn, size_t dest_size);
return 0;
if (iqs < conf->size_arg)
return 0;
return 0;
if (iqs < conf->size_arg)
return 0;
- btr_splice_out_node(fn->btrn);
+ btr_splice_out_node(&fn->btrn);
return -E_PREBUFFER_SUCCESS;
}
return -E_PREBUFFER_SUCCESS;
}
ret = -E_WAV_SUCCESS;
err:
if (ret == -E_WAV_SUCCESS)
ret = -E_WAV_SUCCESS;
err:
if (ret == -E_WAV_SUCCESS)
- btr_splice_out_node(btrn);
+ btr_splice_out_node(&fn->btrn);
else {
btr_remove_node(&fn->btrn);
PARA_ERROR_LOG("%s\n", para_strerror(-ret));
else {
btr_remove_node(&fn->btrn);
PARA_ERROR_LOG("%s\n", para_strerror(-ret));