mxfdemux: Don't leak index table segments on failures
authorEdward Hervey <edward@centricular.com>
Wed, 12 Oct 2022 09:12:14 +0000 (11:12 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 12 Oct 2022 09:15:57 +0000 (09:15 +0000)
The segment was freed ... but not the contents :)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3163>

subprojects/gst-plugins-bad/gst/mxf/mxfdemux.c

index f9d9a69..d9eb9a5 100644 (file)
@@ -3372,6 +3372,7 @@ gst_mxf_demux_handle_index_table_segment (GstMXFDemux * demux, GstMXFKLV * klv)
   if (g_list_find_custom (demux->pending_index_table_segments, segment,
           (GCompareFunc) compare_index_table_segment)) {
     GST_DEBUG_OBJECT (demux, "Already in pending list");
+    mxf_index_table_segment_reset (segment);
     g_free (segment);
     return GST_FLOW_OK;
   }
@@ -3380,6 +3381,7 @@ gst_mxf_demux_handle_index_table_segment (GstMXFDemux * demux, GstMXFKLV * klv)
     if (g_array_binary_search (table->segments, segment,
             (GCompareFunc) compare_index_table_segment, NULL)) {
       GST_DEBUG_OBJECT (demux, "Already handled");
+      mxf_index_table_segment_reset (segment);
       g_free (segment);
       return GST_FLOW_OK;
     }