From 10fe0497b2f989ed6e413d65dcc06b6ee3c539fe Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sat, 3 Dec 2016 12:43:22 +0900 Subject: [PATCH] playback: Fix leak on select_streams Since gst_event_parse_select_streams() returns newly allocated memory for stream-id(s), it should be freed explicitly. https://bugzilla.gnome.org/show_bug.cgi?id=775553 --- gst/playback/gstdecodebin3.c | 8 ++++++-- gst/playback/gstplaybin3.c | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c index 92cb9adc63..ca4ff742a3 100644 --- a/gst/playback/gstdecodebin3.c +++ b/gst/playback/gstdecodebin3.c @@ -2403,8 +2403,10 @@ ghost_pad_event_probe (GstPad * pad, GstPadProbeInfo * info, gst_event_unref (event); } /* Finally handle the switch */ - if (streams) + if (streams) { handle_stream_switch (dbin, streams, seqnum); + g_list_free_full (streams, g_free); + } ret = GST_PAD_PROBE_HANDLED; } break; @@ -2450,8 +2452,10 @@ gst_decodebin3_send_event (GstElement * element, GstEvent * event) } #endif /* Finally handle the switch */ - if (streams) + if (streams) { handle_stream_switch (dbin, streams, seqnum); + g_list_free_full (streams, g_free); + } gst_event_unref (event); return TRUE; diff --git a/gst/playback/gstplaybin3.c b/gst/playback/gstplaybin3.c index 337a85ac8a..5baae3ddb0 100644 --- a/gst/playback/gstplaybin3.c +++ b/gst/playback/gstplaybin3.c @@ -2371,7 +2371,14 @@ update_select_streams_event (GstPlayBin3 * playbin, GstEvent * event) } gst_event_unref (event); - return gst_event_new_select_streams (to_use); + event = gst_event_new_select_streams (to_use); + + if (streams) + g_list_free_full (streams, g_free); + if (to_use) + g_list_free_full (to_use, g_free); + + return event; } static gboolean