smpte: Fix memory leak
authorRavi Kiran K N <ravi.kiran@samsung.com>
Thu, 27 Aug 2015 04:58:55 +0000 (10:28 +0530)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 27 Aug 2015 08:13:43 +0000 (11:13 +0300)
In gst_smpte_collected(), check upfront if input formats are same
or not. This avoids allocation of in1 and in2 buffers and
subsequent memory leak when input formats do not match.

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

gst/smpte/gstsmpte.c

index 722f146..696a1b4 100644 (file)
@@ -468,6 +468,9 @@ gst_smpte_collected (GstCollectPads * pads, GstSMPTE * smpte)
       !gst_pad_has_current_caps (smpte->sinkpad2))
     goto not_negotiated;
 
+  if (!gst_video_info_is_equal (&smpte->vinfo1, &smpte->vinfo2))
+    goto input_formats_do_not_match;
+
   if (smpte->send_stream_start) {
     gchar s_id[32];
 
@@ -506,9 +509,6 @@ gst_smpte_collected (GstCollectPads * pads, GstSMPTE * smpte)
     gst_buffer_unmap (in2, &map);
   }
 
-  if (!gst_video_info_is_equal (&smpte->vinfo1, &smpte->vinfo2))
-    goto input_formats_do_not_match;
-
   if (smpte->position < smpte->end_position) {
     outbuf = gst_buffer_new_and_alloc (I420_SIZE (smpte->width, smpte->height));