Merge "stream: ast_stream_clone() cannot copy the opaque user data."

This commit is contained in:
Joshua Colp
2017-05-08 17:25:22 -05:00
committed by Gerrit Code Review
2 changed files with 8 additions and 1 deletions

View File

@@ -126,7 +126,7 @@ void ast_stream_free(struct ast_stream *stream);
* \retval NULL failure * \retval NULL failure
* *
* \note Opaque data pointers set with ast_stream_set_data() are not part * \note Opaque data pointers set with ast_stream_set_data() are not part
* of the deep clone. The pointers are simply copied. * of the deep clone. We have no way to clone the data.
* *
* \since 15 * \since 15
*/ */

View File

@@ -99,6 +99,7 @@ struct ast_stream *ast_stream_clone(const struct ast_stream *stream)
{ {
struct ast_stream *new_stream; struct ast_stream *new_stream;
size_t stream_size; size_t stream_size;
int idx;
if (!stream) { if (!stream) {
return NULL; return NULL;
@@ -115,6 +116,12 @@ struct ast_stream *ast_stream_clone(const struct ast_stream *stream)
ao2_ref(new_stream->formats, +1); ao2_ref(new_stream->formats, +1);
} }
/* We cannot clone the opaque data because we don't know how. */
for (idx = 0; idx < AST_STREAM_DATA_SLOT_MAX; ++idx) {
new_stream->data[idx] = NULL;
new_stream->data_free_fn[idx] = NULL;
}
return new_stream; return new_stream;
} }