From 9f01bfbd3c3094593c318ecfe2109f724f583aca Mon Sep 17 00:00:00 2001 From: Alban Browaeys Date: Wed, 18 Aug 2010 15:47:16 +0200 Subject: [PATCH] dri2: check xDrawable is not freed before freeing it. --- src/glx/dri2_glx.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index ff48c79..3b1bffd 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -207,10 +207,13 @@ dri2DestroyDrawable(__GLXDRIdrawable *base) struct dri2_drawable *pdraw = (struct dri2_drawable *) base; struct glx_display *dpyPriv = psc->base.display; struct dri2_display *pdp = (struct dri2_display *)dpyPriv->dri2Display; + XID xDrawable = pdraw->base.xDrawable; - __glxHashDelete(pdp->dri2Hash, pdraw->base.xDrawable); (*psc->core->destroyDrawable) (pdraw->driDrawable); - DRI2DestroyDrawable(psc->base.dpy, pdraw->base.xDrawable); + if (!dri2GetGlxDrawableFromXDrawableId(psc->base.dpy, xDrawable)) { + __glxHashDelete(pdp->dri2Hash, xDrawable); + DRI2DestroyDrawable(psc->base.dpy, xDrawable); + } Xfree(pdraw); } -- 1.7.1