summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gbeauchesne@splitted-desktop.com>2009-07-08 07:53:37 +0000
committerAustin Yuan <shengquan.yuan@intel.com>2009-07-08 17:06:30 +0800
commit45da23d92e277e8120825ff63fea6f91c3c64028 (patch)
treed81111a02ea296c6b385681ec0d58f01ddacdc76
parent6bd96ba88a366f1dda0a842337aed6b53b373f6c (diff)
downloadlibva-45da23d92e277e8120825ff63fea6f91c3c64028.tar.gz
Fix memory leak (VADriverContext.dri_state).
Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>
-rw-r--r--src/x11/va_x11.c9
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);
}
}