From 13a45c0a38c5966d96adccab235b6541f97f6da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 28 Jun 2018 14:13:39 +0200 Subject: [PATCH] bufferlist: Add test to ensure that buffers in an non-writable list are not writable https://bugzilla.gnome.org/show_bug.cgi?id=796692 --- tests/check/gst/gstbufferlist.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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; }