From a0f4d95e0b7078323cc1b2bae371a59cdb2beaad Mon Sep 17 00:00:00 2001 From: Ed Catmur Date: Fri, 21 Apr 2006 12:40:41 +0000 Subject: [PATCH] ext/lame/gstlame.c: Don't crash if we get an EOS event before the encoder has been set up (#339287). Original commit message from CVS: Patch by: Ed Catmur * ext/lame/gstlame.c: (gst_lame_sink_event): Don't crash if we get an EOS event before the encoder has been set up (#339287). --- ChangeLog | 8 ++++++++ ext/lame/gstlame.c | 30 +++++++++++++++++------------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4c265e1ca9..7f1d0859b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-04-21 Tim-Philipp Müller + + Patch by: Ed Catmur + + * ext/lame/gstlame.c: (gst_lame_sink_event): + Don't crash if we get an EOS event before the encoder + has been set up (#339287). + 2006-04-21 Wim Taymans * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_start), diff --git a/ext/lame/gstlame.c b/ext/lame/gstlame.c index 8a86fc16b2..10febe501a 100644 --- a/ext/lame/gstlame.c +++ b/ext/lame/gstlame.c @@ -951,20 +951,24 @@ gst_lame_sink_event (GstPad * pad, GstEvent * event) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_EOS:{ - GstBuffer *buf; - gint size; - GST_DEBUG_OBJECT (lame, "handling EOS event"); - buf = gst_buffer_new_and_alloc (7200); - size = lame_encode_flush (lame->lgf, GST_BUFFER_DATA (buf), 7200); - if (size > 0) { - GST_BUFFER_SIZE (buf) = size; - GST_DEBUG_OBJECT (lame, "pushing final packet of %u bytes", size); - gst_buffer_set_caps (buf, GST_PAD_CAPS (lame->srcpad)); - gst_pad_push (lame->srcpad, buf); - } else { - GST_DEBUG_OBJECT (lame, "no final packet (size=%d)", size); - gst_buffer_unref (buf); + + if (lame->lgf != NULL) { + GstBuffer *buf; + gint size; + + buf = gst_buffer_new_and_alloc (7200); + size = lame_encode_flush (lame->lgf, GST_BUFFER_DATA (buf), 7200); + + if (size > 0) { + GST_BUFFER_SIZE (buf) = size; + GST_DEBUG_OBJECT (lame, "pushing final packet of %u bytes", size); + gst_buffer_set_caps (buf, GST_PAD_CAPS (lame->srcpad)); + gst_pad_push (lame->srcpad, buf); + } else { + GST_DEBUG_OBJECT (lame, "no final packet (size=%d)", size); + gst_buffer_unref (buf); + } } ret = gst_pad_event_default (pad, event);