From 6944433677be0634ffcba8e149e2a84006dc78ff Mon Sep 17 00:00:00 2001 From: Vineeth T M Date: Thu, 17 Sep 2015 13:35:02 +0900 Subject: [PATCH] gl: Fix GError leaks during failures https://bugzilla.gnome.org/show_bug.cgi?id=755140 --- ext/gl/gstglbasemixer.c | 1 + ext/gl/gstglstereosplit.c | 1 + ext/gl/gstgltestsrc.c | 1 + gst-libs/gst/gl/gstglbasebuffer.c | 1 + gst-libs/gst/gl/gstglbasefilter.c | 1 + gst-libs/gst/gl/gstglfilter.c | 3 +-- 6 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ext/gl/gstglbasemixer.c b/ext/gl/gstglbasemixer.c index f8c8d193d5..3bad76955d 100644 --- a/ext/gl/gstglbasemixer.c +++ b/ext/gl/gstglbasemixer.c @@ -496,6 +496,7 @@ context_error: { GST_ELEMENT_ERROR (mix, RESOURCE, NOT_FOUND, ("%s", error->message), (NULL)); + g_clear_error (&error); return FALSE; } } diff --git a/ext/gl/gstglstereosplit.c b/ext/gl/gstglstereosplit.c index 9c56002401..e175df893c 100644 --- a/ext/gl/gstglstereosplit.c +++ b/ext/gl/gstglstereosplit.c @@ -587,6 +587,7 @@ context_error: { GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND, ("%s", error->message), (NULL)); + g_clear_error (&error); return FALSE; } } diff --git a/ext/gl/gstgltestsrc.c b/ext/gl/gstgltestsrc.c index 877b09a058..93ddfda409 100644 --- a/ext/gl/gstgltestsrc.c +++ b/ext/gl/gstgltestsrc.c @@ -853,6 +853,7 @@ context_error: { GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, ("%s", error->message), (NULL)); + g_clear_error (&error); if (src->context) gst_object_unref (src->context); src->context = NULL; diff --git a/gst-libs/gst/gl/gstglbasebuffer.c b/gst-libs/gst/gl/gstglbasebuffer.c index 61091b831e..495e104ca8 100644 --- a/gst-libs/gst/gl/gstglbasebuffer.c +++ b/gst-libs/gst/gl/gstglbasebuffer.c @@ -110,6 +110,7 @@ _mem_create_gl (GstGLContext * context, struct create_data *transfer) GST_CAT_ERROR (GST_CAT_GL_BASE_BUFFER, "Failed to create GL buffer: %s", error->message); + g_clear_error (&error); } void diff --git a/gst-libs/gst/gl/gstglbasefilter.c b/gst-libs/gst/gl/gstglbasefilter.c index 8538644ff9..e7b2e236a7 100644 --- a/gst-libs/gst/gl/gstglbasefilter.c +++ b/gst-libs/gst/gl/gstglbasefilter.c @@ -368,6 +368,7 @@ context_error: { GST_ELEMENT_ERROR (trans, RESOURCE, NOT_FOUND, ("%s", error->message), (NULL)); + g_clear_error (&error); return FALSE; } error: diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c index 600b7c7c6c..fd29ee030e 100644 --- a/gst-libs/gst/gl/gstglfilter.c +++ b/gst-libs/gst/gl/gstglfilter.c @@ -178,7 +178,6 @@ gst_gl_filter_gl_start (GstGLBaseFilter * base_filter) GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter); GstGLContext *context = GST_GL_BASE_FILTER (filter)->context; gint out_width, out_height; - GError *error = NULL; out_width = GST_VIDEO_INFO_WIDTH (&filter->out_info); out_height = GST_VIDEO_INFO_HEIGHT (&filter->out_info); @@ -205,7 +204,7 @@ gst_gl_filter_gl_start (GstGLBaseFilter * base_filter) context_error: { - GST_ELEMENT_ERROR (filter, RESOURCE, NOT_FOUND, ("%s", error->message), + GST_ELEMENT_ERROR (filter, RESOURCE, NOT_FOUND, ("Could not generate FBO"), (NULL)); return FALSE; }