diff options
author | Joshua Colp <jcolp@digium.com> | 2017-05-08 17:25:22 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-05-08 17:25:22 -0500 |
commit | c62b5721b33a308827233fec5f4d20f98b33c970 (patch) | |
tree | ff80ec9e517a8308de23c06ab0e4574f8c91be13 | |
parent | d96f755682c16141962d0fc7914cd46263f8a961 (diff) | |
parent | 56c5c51076ac75e25130083d1358160cd27b0b8f (diff) |
Merge "stream: ast_stream_clone() cannot copy the opaque user data."
-rw-r--r-- | include/asterisk/stream.h | 2 | ||||
-rw-r--r-- | main/stream.c | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/include/asterisk/stream.h b/include/asterisk/stream.h index 1bb34b72a..821ecec03 100644 --- a/include/asterisk/stream.h +++ b/include/asterisk/stream.h @@ -126,7 +126,7 @@ void ast_stream_free(struct ast_stream *stream); * \retval NULL failure * * \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 */ diff --git a/main/stream.c b/main/stream.c index 0f2393359..804a0b8ee 100644 --- a/main/stream.c +++ b/main/stream.c @@ -99,6 +99,7 @@ struct ast_stream *ast_stream_clone(const struct ast_stream *stream) { struct ast_stream *new_stream; size_t stream_size; + int idx; if (!stream) { return NULL; @@ -115,6 +116,12 @@ struct ast_stream *ast_stream_clone(const struct ast_stream *stream) 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; } |