summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Rubinstein <mrubinstein@weather.com>2013-05-25 15:25:56 +0200
committerSebastian Dröge <slomo@circular-chaos.org>2013-05-25 15:49:21 +0200
commite6c8224609731f0cba270a28b92a4676f3246a2e (patch)
treef063f34239e40f06d2269afb4c3ca461ceebbb00
parent8303561bd97114b4f8e58987bab5f3903858ac2f (diff)
downloadgstreamer-plugins-bad-e6c8224609731f0cba270a28b92a4676f3246a2e.tar.gz
mpegtsdemux: Free memory behind GString if we don't use it
https://bugzilla.gnome.org/show_bug.cgi?id=700903
-rw-r--r--gst/mpegtsdemux/mpegtsbase.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 99215d789..02fa53bae 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);