From 2496bb03f3e70bcbee39ab84c1780ccbd57e97be Mon Sep 17 00:00:00 2001 From: Gwenole Beauchesne Date: Wed, 8 Jul 2009 07:53:37 +0000 Subject: [PATCH] Fix memory leak (VADriverContext.dri_state). Signed-off-by: Austin Yuan --- src/x11/va_x11.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/x11/va_x11.c b/src/x11/va_x11.c index 5e69d6b..46911fc 100644 --- a/src/x11/va_x11.c +++ b/src/x11/va_x11.c @@ -93,6 +93,7 @@ static void va_DisplayContextDestroy ( } ctx = &((*ctx)->pNext); } + free(pDisplayContext->pDriverContext->dri_state); free(pDisplayContext->pDriverContext); free(pDisplayContext); } @@ -197,9 +198,11 @@ VADisplay vaGetDisplay ( { /* create new entry */ VADriverContextP pDriverContext; + struct dri_state *dri_state; pDisplayContext = calloc(1, sizeof(*pDisplayContext)); pDriverContext = calloc(1, sizeof(*pDriverContext)); - if (pDisplayContext && pDriverContext) + dri_state = calloc(1, sizeof(*dri_state)); + if (pDisplayContext && pDriverContext && dri_state) { pDriverContext->old_pNext = (void *)(unsigned long)0xdeadbeef; pDriverContext->x11_dpy = native_dpy; @@ -209,7 +212,7 @@ VADisplay vaGetDisplay ( pDisplayContext->vaDestroy = va_DisplayContextDestroy; pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName; pDisplayContexts = pDisplayContext; - pDriverContext->dri_state = calloc(1, sizeof(struct dri_state)); + pDriverContext->dri_state = dri_state; dpy = (VADisplay)pDisplayContext; } else @@ -218,6 +221,8 @@ VADisplay vaGetDisplay ( free(pDisplayContext); if (pDriverContext) free(pDriverContext); + if (dri_state) + free(dri_state); } } -- 2.7.4