diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | gst/wavparse/gstwavparse.c | 10 |
2 files changed, 13 insertions, 7 deletions
@@ -1,3 +1,13 @@ +2007-02-12 Tim-Philipp Müller <tim at centricular dot net> + + Based on patch by: Jonathan Matthew <jonathan at kaolin wh9 net> + + * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_stream_init), + (gst_wavparse_stream_data): + Fix massive memory leak when operating in streaming mode due to + GST_BUFFER_MALLOCDATA() not being set on newly-created buffers. + Fixes #407057. + 2007-02-12 Stefan Kost <ensonic@users.sf.net> * gst/avi/gstavidemux.c: (gst_avi_demux_class_init), diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index e6a14483..72f0e944 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -1319,12 +1319,10 @@ static GstFlowReturn gst_wavparse_parse_stream_init (GstWavParse * wav) { if (gst_adapter_available (wav->adapter) >= 12) { - GstBuffer *tmp = gst_buffer_new (); + GstBuffer *tmp; /* _take flushes the data */ - GST_BUFFER_DATA (tmp) = gst_adapter_take (wav->adapter, 12); - GST_BUFFER_SIZE (tmp) = 12; - + tmp = gst_adapter_take_buffer (wav->adapter, 12); GST_DEBUG ("Parsing wav header"); if (!gst_wavparse_parse_file_header (GST_ELEMENT (wav), tmp)) { return GST_FLOW_ERROR; @@ -1458,9 +1456,7 @@ iterate_adapter: return GST_FLOW_OK; } - buf = gst_buffer_new (); - GST_BUFFER_DATA (buf) = gst_adapter_take (wav->adapter, desired); - GST_BUFFER_SIZE (buf) = desired; + buf = gst_adapter_take_buffer (wav->adapter, desired); } else { if ((res = gst_pad_pull_range (wav->sinkpad, wav->offset, desired, &buf)) != GST_FLOW_OK) |