mpeg2dec: fix buffer leak in crop_buffer()
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 27 Mar 2015 13:41:51 +0000 (14:41 +0100)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Mon, 30 Mar 2015 20:19:00 +0000 (16:19 -0400)
gst_buffer_pool_acquire_buffer() gives us a new owned buffer while
gst_buffer_replace() reffed it as well so we were one reference extra.

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

ext/mpeg2dec/gstmpeg2dec.c

index 3ba288024d5a7bb2f88cd7d00887c8b18d505edd..1c76cfa630c0402082f64e2d7567d6b390736fbf 100644 (file)
@@ -509,7 +509,9 @@ gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstVideoCodecFrame * in_frame,
   if (!gst_video_frame_map (&output_frame, info, buffer, GST_MAP_WRITE))
     goto map_fail;
 
-  gst_buffer_replace (&in_frame->output_buffer, buffer);
+  if (in_frame->output_buffer)
+    gst_buffer_unref (in_frame->output_buffer);
+  in_frame->output_buffer = buffer;
 
   if (!gst_video_frame_copy (&output_frame, input_vframe))
     goto copy_failed;