oggmux: don't keep a static string beyond the ref of the owning object
authorStefan Sauer <ensonic@users.sf.net>
Tue, 5 Mar 2013 21:29:24 +0000 (22:29 +0100)
committerStefan Sauer <ensonic@users.sf.net>
Tue, 5 Mar 2013 21:31:26 +0000 (22:31 +0100)
Also move down the ref for the caps a bit, so tha we don't leak it in the branch that calls continue.

ext/ogg/gstoggmux.c

index f476212..6bc9f7a 100644 (file)
@@ -1360,23 +1360,11 @@ gst_ogg_mux_send_headers (GstOggMux * mux)
     GstPad *thepad;
     GstBuffer *hbuf;
     GstMapInfo map;
-#ifndef GST_DISABLE_DEBUG
     GstCaps *caps;
-    const gchar *mime_type;
-#endif
+    const gchar *mime_type = "";
 
     pad = (GstOggPadData *) walk->data;
     thepad = pad->collect.pad;
-#ifndef GST_DISABLE_DEBUG
-    if ((caps = gst_pad_get_current_caps (thepad))) {
-      GstStructure *structure = gst_caps_get_structure (caps, 0);
-      mime_type = gst_structure_get_name (structure);
-      gst_caps_unref (caps);
-    } else {
-      mime_type = "";
-    }
-#endif
-
     walk = walk->next;
 
     pad->packetno = 0;
@@ -1398,6 +1386,11 @@ gst_ogg_mux_send_headers (GstOggMux * mux)
       continue;
     }
 
+    if ((caps = gst_pad_get_current_caps (thepad))) {
+      GstStructure *structure = gst_caps_get_structure (caps, 0);
+      mime_type = gst_structure_get_name (structure);
+    }
+
     /* create a packet from the buffer */
     gst_buffer_map (buf, &map, GST_MAP_READ);
     packet.packet = map.data;
@@ -1431,6 +1424,10 @@ gst_ogg_mux_send_headers (GstOggMux * mux)
     } else {
       hbufs = g_list_append (hbufs, hbuf);
     }
+
+    if (caps) {
+      gst_caps_unref (caps);
+    }
   }
 
   /* The Skeleton BOS goes first - even before the video that went first before */