basetextoverlay: fix buffer leak in chain function
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 9 Apr 2015 15:03:11 +0000 (17:03 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 10 Apr 2015 09:12:19 +0000 (10:12 +0100)
If we don't consume the buffer by passing its reference to
overlay->text_buffer then we need to unref it.

Fix a leak with validate.file.playback.fast_forward.test5_mkv
when running inside Valgrind.

https://bugzilla.gnome.org/show_bug.cgi?id=747602

ext/pango/gstbasetextoverlay.c

index 1dc14b1..b66768d 100644 (file)
@@ -2273,7 +2273,9 @@ gst_base_text_overlay_text_chain (GstPad * pad, GstObject * parent,
     if (GST_BUFFER_TIMESTAMP_IS_VALID (buffer))
       overlay->text_segment.position = clip_start;
 
-    overlay->text_buffer = buffer;
+    overlay->text_buffer = buffer;      /* pass ownership of @buffer */
+    buffer = NULL;
+
     /* That's a new text buffer we need to render */
     overlay->need_render = TRUE;
 
@@ -2284,6 +2286,8 @@ gst_base_text_overlay_text_chain (GstPad * pad, GstObject * parent,
   GST_BASE_TEXT_OVERLAY_UNLOCK (overlay);
 
 beach:
+  if (buffer)
+    gst_buffer_unref (buffer);
 
   return ret;
 }