openh264dec: Fix various crashes on ::stop()
authorSebastian Dröge <sebastian@centricular.com>
Thu, 2 Oct 2014 11:03:43 +0000 (14:03 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 3 Oct 2014 14:23:35 +0000 (17:23 +0300)
ext/openh264/gstopenh264dec.cpp

index 20c29e4..401ac15 100644 (file)
@@ -189,14 +189,18 @@ static gboolean gst_openh264dec_start(GstVideoDecoder *decoder)
 static gboolean gst_openh264dec_stop(GstVideoDecoder *decoder)
 {
     GstOpenh264Dec *openh264dec = GST_OPENH264DEC(decoder);
-    gint ret;
+    gint ret = TRUE;
 
-    gst_h264_nal_parser_free(openh264dec->priv->nal_parser);
-    openh264dec->priv->nal_parser = NULL;
+    if (openh264dec->priv->nal_parser) {
+      gst_h264_nal_parser_free(openh264dec->priv->nal_parser);
+      openh264dec->priv->nal_parser = NULL;
+    }
 
-    ret = openh264dec->priv->decoder->Uninitialize();
-    WelsDestroyDecoder(openh264dec->priv->decoder);
-    openh264dec->priv->decoder = NULL;
+    if (openh264dec->priv->decoder) {
+      ret = openh264dec->priv->decoder->Uninitialize();
+      WelsDestroyDecoder(openh264dec->priv->decoder);
+      openh264dec->priv->decoder = NULL;
+    }
 
     if (openh264dec->priv->input_state) {
       gst_video_codec_state_unref (openh264dec->priv->input_state);