From e6c8224609731f0cba270a28b92a4676f3246a2e Mon Sep 17 00:00:00 2001 From: Michael Rubinstein Date: Sat, 25 May 2013 15:25:56 +0200 Subject: [PATCH] mpegtsdemux: Free memory behind GString if we don't use it https://bugzilla.gnome.org/show_bug.cgi?id=700903 --- gst/mpegtsdemux/mpegtsbase.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index 99215d7895..02fa53bae4 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -337,12 +337,13 @@ mpegts_get_descriptor_from_stream (MpegTSBaseStream * stream, guint8 tag) for (i = 0; i < descriptors->n_values; i++) { GValue *value = g_value_array_get_nth (descriptors, i); GString *desc = g_value_dup_boxed (value); - if (DESC_TAG (desc->str) == tag) { + if (DESC_TAG (desc->str) == tag && !retval) { retval = (guint8 *) desc->str; g_string_free (desc, FALSE); break; - } else - g_string_free (desc, FALSE); + } else { + g_string_free (desc, TRUE); + } } g_value_array_free (descriptors); @@ -404,12 +405,12 @@ mpegts_get_descriptor_from_program (MpegTSBaseProgram * program, guint8 tag) for (i = 0; i < descriptors->n_values; i++) { GValue *value = g_value_array_get_nth (descriptors, i); GString *desc = g_value_dup_boxed (value); - if (DESC_TAG (desc->str) == tag) { + if (DESC_TAG (desc->str) == tag && !retval) { retval = (guint8 *) desc->str; g_string_free (desc, FALSE); break; } else - g_string_free (desc, FALSE); + g_string_free (desc, TRUE); } g_value_array_free (descriptors);