summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);