diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2024-03-27 17:05:09 +0200 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2024-04-15 19:07:08 +0000 |
commit | 3eedd8221c31084c46419c14fc05c3373c7c5072 (patch) | |
tree | 556da55c46720fcca2821c6f10cf78303870951a | |
parent | 17b0b949a469df2c60a90554d34589741268263f (diff) |
basesrc: Clear submitted buffer lists consistently with buffers
And handle the case of a NULL buffer being returned cleanly, which is
valid as long as a buffer list is returned instead. Previously this
would cause an assertion because of calling gst_buffer_unref() with
NULL.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6462>
-rw-r--r-- | subprojects/gstreamer/libs/gst/base/gstbasesrc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/subprojects/gstreamer/libs/gst/base/gstbasesrc.c b/subprojects/gstreamer/libs/gst/base/gstbasesrc.c index e47d14581e..646c94962d 100644 --- a/subprojects/gstreamer/libs/gst/base/gstbasesrc.c +++ b/subprojects/gstreamer/libs/gst/base/gstbasesrc.c @@ -2599,7 +2599,8 @@ again: wait_ret = gst_base_src_wait_playing_unlocked (src); if (wait_ret != GST_FLOW_OK) { if (ret == GST_FLOW_OK && own_res_buf) - gst_buffer_unref (res_buf); + gst_clear_buffer (&res_buf); + gst_clear_buffer_list (&src->priv->pending_bufferlist); ret = wait_ret; goto stopped; } @@ -2612,7 +2613,8 @@ again: if (G_UNLIKELY (g_atomic_int_get (&src->priv->has_pending_eos))) { if (ret == GST_FLOW_OK) { if (own_res_buf) - gst_buffer_unref (res_buf); + gst_clear_buffer (&res_buf); + gst_clear_buffer_list (&src->priv->pending_bufferlist); } src->priv->forced_eos = TRUE; goto eos; |