From c4b86b37fbc3de287ec40c696b13ba07d67eb9e0 Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Tue, 1 Dec 2009 13:22:57 -0300 Subject: [PATCH] subparse: conditionally cleanup sami context Only cleanup sami context if we are parsing sami subtitles, otherwise we might have crashes. --- gst/subparse/gstsubparse.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c index a328b67..41a1c7e 100644 --- a/gst/subparse/gstsubparse.c +++ b/gst/subparse/gstsubparse.c @@ -163,7 +163,8 @@ gst_sub_parse_dispose (GObject * object) subparse->textbuf = NULL; } #ifndef GST_DISABLE_XML - sami_context_deinit (&subparse->state); + if (subparse->parser_type == GST_SUB_PARSE_FORMAT_SAMI) + sami_context_deinit (&subparse->state); #endif GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object)); @@ -1189,14 +1190,14 @@ parser_state_init (ParserState * state) } static void -parser_state_dispose (ParserState * state) +parser_state_dispose (GstSubParse * self, ParserState * state) { if (state->buf) { g_string_free (state->buf, TRUE); state->buf = NULL; } #ifndef GST_DISABLE_XML - if (state->user_data) { + if (state->user_data && self->parser_type == GST_SUB_PARSE_FORMAT_SAMI) { sami_context_reset (state); } #endif @@ -1670,7 +1671,7 @@ gst_sub_parse_change_state (GstElement * element, GstStateChange transition) switch (transition) { case GST_STATE_CHANGE_PAUSED_TO_READY: - parser_state_dispose (&self->state); + parser_state_dispose (self, &self->state); self->parser_type = GST_SUB_PARSE_FORMAT_UNKNOWN; break; default: -- 2.7.4