[0.11] gst-plugins-good: isomp4: fix caps leak

Sebastian Dröge slomo at kemper.freedesktop.org
Tue Jan 10 05:33:27 PST 2012


Module: gst-plugins-good
Branch: 0.11
Commit: a6d9f6a3ced3c64996623ecbc49e8499cb6a97e0
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=a6d9f6a3ced3c64996623ecbc49e8499cb6a97e0

Author: Vincent Penquerc'h <vincent.penquerch at collabora.co.uk>
Date:   Thu Jan  5 19:25:33 2012 +0000

isomp4: fix caps leak

---

 gst/isomp4/gstqtmux.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c
index f575ab1..2ce9840 100644
--- a/gst/isomp4/gstqtmux.c
+++ b/gst/isomp4/gstqtmux.c
@@ -2585,7 +2585,6 @@ gst_qt_mux_audio_sink_set_caps (GstPad * pad, GstCaps * caps)
   AtomInfo *ext_atom = NULL;
   gint constant_size = 0;
   const gchar *stream_format;
-  GstCaps *current_caps = NULL;
 
   /* find stream data */
   qtpad = (GstQTPad *) gst_pad_get_element_private (pad);
@@ -2597,10 +2596,14 @@ gst_qt_mux_audio_sink_set_caps (GstPad * pad, GstCaps * caps)
    * the old caps are a subset of the new one (this means upstream
    * added more info to the caps, as both should be 'fixed' caps) */
   if (qtpad->fourcc) {
+    GstCaps *current_caps = NULL;
+    gboolean is_subset;
     g_object_get (pad, "caps", &current_caps, NULL);
     g_assert (caps != NULL);
 
-    if (!gst_qtmux_caps_is_subset_full (qtmux, current_caps, caps)) {
+    is_subset = gst_qtmux_caps_is_subset_full (qtmux, current_caps, caps);
+    gst_caps_unref (current_caps);
+    if (!is_subset) {
       goto refuse_renegotiation;
     }
     GST_DEBUG_OBJECT (qtmux,
@@ -2907,7 +2910,6 @@ gst_qt_mux_video_sink_set_caps (GstPad * pad, GstCaps * caps)
   GList *ext_atom_list = NULL;
   gboolean sync = FALSE;
   int par_num, par_den;
-  GstCaps *current_caps = NULL;
 
   /* find stream data */
   qtpad = (GstQTPad *) gst_pad_get_element_private (pad);
@@ -2919,10 +2921,14 @@ gst_qt_mux_video_sink_set_caps (GstPad * pad, GstCaps * caps)
    * the old caps are a subset of the new one (this means upstream
    * added more info to the caps, as both should be 'fixed' caps) */
   if (qtpad->fourcc) {
+    GstCaps *current_caps = NULL;
+    gboolean is_subset;
     g_object_get (pad, "caps", &current_caps, NULL);
     g_assert (caps != NULL);
 
-    if (!gst_qtmux_caps_is_subset_full (qtmux, current_caps, caps)) {
+    is_subset = gst_qtmux_caps_is_subset_full (qtmux, current_caps, caps);
+    gst_caps_unref (current_caps);
+    if (!is_subset) {
       goto refuse_renegotiation;
     }
     GST_DEBUG_OBJECT (qtmux,



More information about the gstreamer-commits mailing list