diff --git a/include/asterisk/stream.h b/include/asterisk/stream.h
index 1bb34b72a27d73daad4a66d5eaf8f1206196acf0..821ecec030df58109a8efd623f809657e8885df3 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 0f2393359002736ce285d7fc0af25fda5422ebea..804a0b8eeda27a5a15486e0fa17a0bdff9ddd4ca 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;
 }