mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 17:50:36 +00:00
oggdemux: Don't leak allocated buffers
This can happen if the combined flow return is not OK although the allocation succeeded or if the packet in question is a BOS and we're not going to push headers. Fixes bug #608699.
This commit is contained in:
parent
fd755182b1
commit
4914aeda2f
1 changed files with 4 additions and 1 deletions
|
@ -475,7 +475,7 @@ static GstFlowReturn
|
|||
gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet,
|
||||
gboolean push_headers)
|
||||
{
|
||||
GstBuffer *buf;
|
||||
GstBuffer *buf = NULL;
|
||||
GstFlowReturn ret, cret;
|
||||
GstOggDemux *ogg = pad->ogg;
|
||||
gint64 current_time;
|
||||
|
@ -647,6 +647,7 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet,
|
|||
/* don't push the header packets when we are asked to skip them */
|
||||
if (!packet->b_o_s || push_headers) {
|
||||
ret = gst_pad_push (GST_PAD_CAST (pad), buf);
|
||||
buf = NULL;
|
||||
|
||||
/* combine flows */
|
||||
cret = gst_ogg_demux_combine_flows (ogg, pad, ret);
|
||||
|
@ -684,6 +685,8 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet,
|
|||
GST_TIME_ARGS (current_time));
|
||||
|
||||
done:
|
||||
if (buf)
|
||||
gst_buffer_unref (buf);
|
||||
/* return combined flow result */
|
||||
return cret;
|
||||
|
||||
|
|
Loading…
Reference in a new issue