glx: Fix use after free problem

This commit is contained in:
Kristian Høgsberg 2010-09-08 14:51:18 -04:00
parent fc1daab2a2
commit 659dab6be6

View file

@ -248,12 +248,6 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
oldGC->currentDrawable = None;
oldGC->currentReadable = None;
oldGC->thread_id = 0;
if (oldGC->xid == None && oldGC != gc)
/* We are switching away from a context that was
* previously destroyed, so we need to free the memory
* for the old handle.
*/
oldGC->vtable->destroy(oldGC);
}
if (gc) {
@ -267,6 +261,13 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
__glXSetCurrentContextNull();
}
if (oldGC != &dummyContext && oldGC->xid == None && oldGC != gc) {
/* We are switching away from a context that was
* previously destroyed, so we need to free the memory
* for the old handle. */
oldGC->vtable->destroy(oldGC);
}
if (ret) {
__glXGenerateError(dpy, gc, None, ret, X_GLXMakeContextCurrent);
return GL_FALSE;