diff options
author | Tim-Philipp Müller <tim.muller@collabora.co.uk> | 2013-07-16 18:30:50 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim.muller@collabora.co.uk> | 2013-07-16 19:06:23 +0100 |
commit | 1e83a527a5907398ab056a414dc9d772c98f5c02 (patch) | |
tree | 94866c1758fa2dba61d3531ffb7afd61d1e4c86a | |
parent | 1456511b79098524b638a2777467b1956a76687b (diff) |
subparse: don't leak parse context for sami and qttext
In gst_sub_parse_dispose() parser_type will be UNKNOWN,
so these deinit calls were never executed. And we should
clean up the parser state in the downwards state change
anyway.
-rw-r--r-- | gst/subparse/gstsubparse.c | 16 | ||||
-rw-r--r-- | gst/subparse/samiparse.c | 6 |
2 files changed, 8 insertions, 14 deletions
diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c index b93375c85..3998616d9 100644 --- a/gst/subparse/gstsubparse.c +++ b/gst/subparse/gstsubparse.c @@ -93,17 +93,6 @@ gst_sub_parse_dispose (GObject * object) GST_DEBUG_OBJECT (subparse, "cleaning up subtitle parser"); - switch (subparse->parser_type) { - case GST_SUB_PARSE_FORMAT_QTTEXT: - qttext_context_deinit (&subparse->state); - break; - case GST_SUB_PARSE_FORMAT_SAMI: - sami_context_deinit (&subparse->state); - break; - default: - break; - } - if (subparse->encoding) { g_free (subparse->encoding); subparse->encoding = NULL; @@ -1161,8 +1150,11 @@ parser_state_dispose (GstSubParse * self, ParserState * state) } if (state->user_data) { switch (self->parser_type) { + case GST_SUB_PARSE_FORMAT_QTTEXT: + qttext_context_deinit (state); + break; case GST_SUB_PARSE_FORMAT_SAMI: - sami_context_reset (state); + sami_context_deinit (state); break; default: break; diff --git a/gst/subparse/samiparse.c b/gst/subparse/samiparse.c index 032a04f75..a38396325 100644 --- a/gst/subparse/samiparse.c +++ b/gst/subparse/samiparse.c @@ -825,14 +825,16 @@ sami_context_init (ParserState * state) GstSamiContext *context; g_assert (state->user_data == NULL); - state->user_data = (gpointer) g_new0 (GstSamiContext, 1); - context = (GstSamiContext *) state->user_data; + + context = g_new0 (GstSamiContext, 1); context->htmlctxt = html_context_new (&samiParser, context); context->buf = g_string_new (""); context->rubybuf = g_string_new (""); context->resultbuf = g_string_new (""); context->state = g_string_new (""); + + state->user_data = context; } void |