From: Sebastian Dröge Date: Tue, 2 Feb 2010 09:18:05 +0000 (+0100) Subject: oggdemux: Don't leak allocated buffers X-Git-Tag: 1.19.3~511^2~8794 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4914aeda2fb91c769f1ad0277ff67e7db992469a;p=platform%2Fupstream%2Fgstreamer.git 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. --- diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c index 2d00a48..c6c6f05 100644 --- a/ext/ogg/gstoggdemux.c +++ b/ext/ogg/gstoggdemux.c @@ -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;