diff --git a/ChangeLog b/ChangeLog index 26e2fd6eb2..75a8435590 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-03-07 Tim-Philipp Müller + + * ext/pango/gsttextoverlay.c: (gst_text_overlay_render_text), + (gst_text_overlay_video_chain): + Fix invalid memory access (we can't access a buffer after it's been + pushed downstream without taking a reference); fix memory leak (if + there's no text to render, bail out before allocating stuff). + 2006-03-07 Tim-Philipp Müller * ext/pango/gsttextoverlay.c: (gst_text_overlay_init), diff --git a/ext/pango/gsttextoverlay.c b/ext/pango/gsttextoverlay.c index 5c248b6d07..5f035bdfb4 100644 --- a/ext/pango/gsttextoverlay.c +++ b/ext/pango/gsttextoverlay.c @@ -894,6 +894,11 @@ gst_text_overlay_render_text (GstTextOverlay * overlay, PangoRectangle ink_rect, logical_rect; gchar *string; + if (!overlay->need_render) { + GST_DEBUG ("Using previously rendered text."); + return; + } + /* -1 is the whole string */ if (text != NULL && textlen < 0) { textlen = strlen (text); @@ -909,11 +914,6 @@ gst_text_overlay_render_text (GstTextOverlay * overlay, /* FIXME: should we check for UTF-8 here? */ - if (!overlay->need_render) { - GST_DEBUG ("Using previously rendered text."); - return; - } - GST_DEBUG ("Rendering '%s'", string); pango_layout_set_markup (overlay->layout, string, textlen); @@ -1316,8 +1316,7 @@ gst_text_overlay_video_chain (GstPad * pad, GstBuffer * buffer) g_free (text); /* Update last_stop */ - gst_segment_set_last_stop (overlay->segment, GST_FORMAT_TIME, - GST_BUFFER_TIMESTAMP (buffer)); + gst_segment_set_last_stop (overlay->segment, GST_FORMAT_TIME, clip_start); } else { /* Out of segment */ GST_OBJECT_UNLOCK (overlay); GST_DEBUG_OBJECT (overlay, "buffer out of segment discarding");