diff options
author | Gwenole Beauchesne <gbeauchesne@splitted-desktop.com> | 2009-07-08 07:53:37 +0000 |
---|---|---|
committer | Austin Yuan <shengquan.yuan@intel.com> | 2009-07-08 17:42:05 +0800 |
commit | 2496bb03f3e70bcbee39ab84c1780ccbd57e97be (patch) | |
tree | 84c398dcf5e350002cb77789e4e9d5955bce6769 | |
parent | 0108c576ab09ac33c5edaee78bcc468527e32da8 (diff) | |
download | libva-2496bb03f3e70bcbee39ab84c1780ccbd57e97be.tar.gz |
Fix memory leak (VADriverContext.dri_state).
Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>
-rw-r--r-- | src/x11/va_x11.c | 9 |
1 files 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); } } |