From 9c49fa711307b498bdad5e566f3c995a0c8b7918 Mon Sep 17 00:00:00 2001 From: Jonathan Matthew Date: Mon, 12 Feb 2007 23:27:31 +0000 Subject: [PATCH] gst/wavparse/gstwavparse.c: Fix massive memory leak when operating in streaming mode due to Original commit message from CVS: Based on patch by: Jonathan Matthew * 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. --- ChangeLog | 10 ++++++++++ gst/wavparse/gstwavparse.c | 10 +++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0bc4b09..70016c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-02-12 Tim-Philipp Müller + + Based on patch by: Jonathan Matthew + + * 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 * gst/avi/gstavidemux.c: (gst_avi_demux_class_init), diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index e6a1448..72f0e94 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) -- 2.7.4