diff --git a/tests/check/gst/gstbufferlist.c b/tests/check/gst/gstbufferlist.c index 2ac332342e..4f831c26b8 100644 --- a/tests/check/gst/gstbufferlist.c +++ b/tests/check/gst/gstbufferlist.c @@ -483,6 +483,31 @@ GST_START_TEST (test_new_sized_0) 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) { @@ -501,6 +526,7 @@ 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; }