static void
gst_selector_pad_free_cached_buffer (GstSelectorPadCachedBuffer * cached_buffer)
{
- gst_buffer_unref (cached_buffer->buffer);
+ if (cached_buffer->buffer)
+ gst_buffer_unref (cached_buffer->buffer);
g_slice_free (GstSelectorPadCachedBuffer, cached_buffer);
}
gst_selector_pad_chain (pad, parent, cached_buffer->buffer);
GST_INPUT_SELECTOR_LOCK (sel);
+ /* We just passed the ownership of the buffer to the chain function */
+ cached_buffer->buffer = NULL;
+ gst_selector_pad_free_cached_buffer (cached_buffer);
+
/* we may have cleaned up the queue in the meantime because of
* old buffers */
if (!selpad->cached_buffers) {