From 0b07495fc24646b47952b8df7d4e6d2df2a0f72c Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Fri, 15 Mar 2013 16:22:57 +0800 Subject: [PATCH] Fix possible memory leak Signed-off-by: Xiang, Haihao --- va/glx/va_glx_impl.c | 12 +++++++++--- va/va.c | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/va/glx/va_glx_impl.c b/va/glx/va_glx_impl.c index 049be09..aacefc8 100644 --- a/va/glx/va_glx_impl.c +++ b/va/glx/va_glx_impl.c @@ -876,19 +876,25 @@ vaCreateSurfaceGLX_impl_libva( gl_get_current_context(&old_cs); new_cs = gl_create_context(ctx, &old_cs); if (!new_cs) - return VA_STATUS_ERROR_ALLOCATION_FAILED; + goto error; if (!gl_set_current_context(new_cs, NULL)) - return VA_STATUS_ERROR_OPERATION_FAILED; + goto error; pSurfaceGLX = create_surface(ctx, target, texture); if (!pSurfaceGLX) - return VA_STATUS_ERROR_ALLOCATION_FAILED; + goto error; pSurfaceGLX->gl_context = new_cs; *gl_surface = pSurfaceGLX; gl_set_current_context(&old_cs, NULL); return VA_STATUS_SUCCESS; + +error: + if (new_cs) + gl_destroy_context(new_cs); + + return VA_STATUS_ERROR_ALLOCATION_FAILED; } static VAStatus diff --git a/va/va.c b/va/va.c index deff824..e60a4b4 100644 --- a/va/va.c +++ b/va/va.c @@ -218,6 +218,7 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name) if (!driver_path) { va_errorMessage("%s L%d Out of memory!n", __FUNCTION__, __LINE__); + free(search_path); return VA_STATUS_ERROR_ALLOCATION_FAILED; } -- 2.7.4