diff --git a/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c b/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c index 56bdc6cf68..d5b8ed7728 100644 --- a/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c +++ b/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c @@ -445,7 +445,11 @@ gst_base_camera_src_change_state (GstElement * element, gst_camerabin_create_preview_pipeline (GST_ELEMENT_CAST (self), self->preview_filter); - g_assert (self->preview_pipeline != NULL); + if (self->preview_pipeline == NULL) { + /* failed to create preview pipeline, fail state change */ + return GST_STATE_CHANGE_FAILURE; + } + self->preview_filter_changed = FALSE; if (self->preview_caps) { GST_DEBUG_OBJECT (self, diff --git a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c index 5dd82dad16..be42c98dc1 100644 --- a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c +++ b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c @@ -231,6 +231,8 @@ void gst_camerabin_destroy_preview_pipeline (GstCameraBinPreviewPipelineData * preview) { + g_return_if_fail (preview != NULL); + if (preview->processing_lock) { g_mutex_free (preview->processing_lock); preview->processing_lock = NULL;