smpte: Fix memory leak

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
This commit is contained in:
Ravi Kiran K N 2015-08-27 10:28:55 +05:30 committed by Sebastian Dröge
parent dd1bd2beb3
commit cac239ab89

View file

@ -468,6 +468,9 @@ gst_smpte_collected (GstCollectPads * pads, GstSMPTE * smpte)
!gst_pad_has_current_caps (smpte->sinkpad2)) !gst_pad_has_current_caps (smpte->sinkpad2))
goto not_negotiated; goto not_negotiated;
if (!gst_video_info_is_equal (&smpte->vinfo1, &smpte->vinfo2))
goto input_formats_do_not_match;
if (smpte->send_stream_start) { if (smpte->send_stream_start) {
gchar s_id[32]; gchar s_id[32];
@ -506,9 +509,6 @@ gst_smpte_collected (GstCollectPads * pads, GstSMPTE * smpte)
gst_buffer_unmap (in2, &map); 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) { if (smpte->position < smpte->end_position) {
outbuf = gst_buffer_new_and_alloc (I420_SIZE (smpte->width, smpte->height)); outbuf = gst_buffer_new_and_alloc (I420_SIZE (smpte->width, smpte->height));