From 3c15867260dd6ccee81bc358b07a77eaeb38585e 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 (cherry picked from commit 0b07495fc24646b47952b8df7d4e6d2df2a0f72c) --- 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 f317961..5299589 100644 --- a/va/glx/va_glx_impl.c +++ b/va/glx/va_glx_impl.c @@ -882,19 +882,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 851a41f..9ad2db4 100644 --- a/va/va.c +++ b/va/va.c @@ -217,6 +217,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