xserver: Branch 'xorg-server-1.4-apple'

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Wed Dec 17 14:36:53 PST 2008


 GL/glx/glxdri.c |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

New commits:
commit 8ffed8b913340904dfb8fe183607d97a27887180
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Fri Aug 24 13:04:48 2007 +0200

    __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture target.
    
    We would most likely crash somewhere in Mesa if we tried to continue in this
    case.
    (cherry picked from commit 095850596114178119a8cc854716ce0cc6e05121)

diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c
index 09abca3..4f80155 100644
--- a/GL/glx/glxdri.c
+++ b/GL/glx/glxdri.c
@@ -374,17 +374,25 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
 {
     RegionPtr	pRegion = NULL;
     PixmapPtr	pixmap;
-    int		bpp, override = 0;
+    int		bpp, override = 0, texname;
     GLenum	format, type;
     ScreenPtr pScreen = glxPixmap->pScreen;
     __GLXDRIscreen * const screen =
 	(__GLXDRIscreen *) __glXgetActiveScreen(pScreen->myNum);
 
+    CALL_GetIntegerv(GET_DISPATCH(), (glxPixmap->target == GL_TEXTURE_2D ?
+				      GL_TEXTURE_BINDING_2D :
+				      GL_TEXTURE_BINDING_RECTANGLE_NV,
+				      &texname));
+
+    if (!texname)
+	return __glXError(GLXBadContextState);
+
     pixmap = (PixmapPtr) glxPixmap->pDraw;
 
     if (screen->texOffsetStart && screen->driScreen.setTexOffset) {
 	__GLXpixmap **texOffsetOverride = screen->texOffsetOverride;
-	int i, firstEmpty = 16, texname;
+	int i, firstEmpty = 16;
 
 	for (i = 0; i < 16; i++) {
 	    if (texOffsetOverride[i] == glxPixmap)
@@ -409,11 +417,6 @@ alreadyin:
 
 	glxPixmap->pDRICtx = &((__GLXDRIcontext*)baseContext)->driContext;
 
-	CALL_GetIntegerv(GET_DISPATCH(), (glxPixmap->target == GL_TEXTURE_2D ?
-					  GL_TEXTURE_BINDING_2D :
-					  GL_TEXTURE_BINDING_RECTANGLE_NV,
-					  &texname));
-
 	if (texname == glxPixmap->texname)
 	    return Success;
 


More information about the xorg-commit mailing list