GST_END_TEST;
+GST_START_TEST (test_multiple_mutable_buffer_references)
+{
+ GstBufferList *b = gst_buffer_list_new_sized (1);
+ GstBuffer *buf1, *buf2;
+
+ gst_buffer_list_add (b, gst_buffer_new ());
+ gst_buffer_list_ref (b);
+
+ buf1 = gst_buffer_list_get (b, 0);
+ buf2 = gst_buffer_list_get (b, 0);
+
+ fail_if (gst_buffer_list_is_writable (b));
+ fail_if (gst_buffer_is_writable (buf1));
+ fail_if (gst_buffer_is_writable (buf2));
+
+ /* Immutable operations that have optimizations for writable buffers
+ * will cause problems now, e.g. read-mapping the buffer and merging
+ * together all the memories and replacing them in the buffer */
+
+ gst_buffer_list_unref (b);
+ gst_buffer_list_unref (b);
+}
+
+GST_END_TEST;
+
static Suite *
gst_buffer_list_suite (void)
{
tcase_add_test (tc_chain, test_get_writable);
tcase_add_test (tc_chain, test_calc_size);
tcase_add_test (tc_chain, test_new_sized_0);
+ tcase_add_test (tc_chain, test_multiple_mutable_buffer_references);
return s;
}