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

George Peter Staplin gstaplin at kemper.freedesktop.org
Tue Oct 7 11:16:14 PDT 2008


 hw/xquartz/GL/visualConfigs.c |  104 +++++++++++++++++++++++-------------------
 1 file changed, 57 insertions(+), 47 deletions(-)

New commits:
commit 1056700971fd5c034396ed6dbea15e092f0c6332
Author: George Staplin <georgestaplin at george-staplins-mac-pro.local>
Date:   Tue Oct 7 12:12:38 2008 -0600

    XQuartz: GL: setVisualConfigs() copied the behavior of indirect.c which is wrong, with regard to the handling of xcalloc failure.
    
    Use ErrorF for an error message after an xcalloc failure, and return instead of falling through to GlxSetVisualConfigs, or abort()ing at the test branch.

diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index 821fad2..e46d628 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -86,65 +86,75 @@ void setVisualConfigs(void) {
 
       2 iterations for accum (on and off (with an accum color size of 16)).
      */
-    
 
     numConfigs = ((enable_stereo && caps->stereo) ? 2 : 1) * 2 * 
 	(caps->aux_buffers ? 2 : 1) * (caps->buffers) * 2 * 2;
 
     visualConfigs = xcalloc(sizeof(*visualConfigs), numConfigs);
+
+    if(NULL == visualConfigs) {
+	ErrorF("xcalloc failure when allocating visualConfigs\n");
+	return;
+    }
+    
     visualPrivates = xcalloc(sizeof(void *), numConfigs);
 
-    if (NULL != visualConfigs) {
-        i = 0; /* current buffer */
-        for (stereo = 0; stereo < ((enable_stereo && caps->stereo) ? 2 : 1); ++stereo) {
-	    for (depth = 0; depth < 2; ++depth) {
-		for (aux = 0; aux < (caps->aux_buffers ? 2 : 1); ++aux) {
-		    for (buffers = 0; buffers < caps->buffers; ++buffers) {
-			for (stencil = 0; stencil < 2; ++stencil) {
-			    for (accum = 0; accum < 2; ++accum) {
-				visualConfigs[i].vid = -1;
-				visualConfigs[i].class = -1;
-				visualConfigs[i].rgba = TRUE;
-				visualConfigs[i].redSize = -1;
-				visualConfigs[i].greenSize = -1;
-				visualConfigs[i].blueSize = -1;
-				visualConfigs[i].redMask = -1;
-				visualConfigs[i].greenMask = -1;
-				visualConfigs[i].blueMask = -1;
-				visualConfigs[i].alphaMask = 0;
-				if (accum) {
-				    visualConfigs[i].accumRedSize = 16;
-				    visualConfigs[i].accumGreenSize = 16;
-				    visualConfigs[i].accumBlueSize = 16;
-				    visualConfigs[i].accumAlphaSize = 16;
-				} else {
-				    visualConfigs[i].accumRedSize = 0;
-				    visualConfigs[i].accumGreenSize = 0;
-				    visualConfigs[i].accumBlueSize = 0;
-				    visualConfigs[i].accumAlphaSize = 0;
-				}
-				visualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE;
-				visualConfigs[i].stereo = stereo ? TRUE : FALSE;
-				visualConfigs[i].bufferSize = -1;
-                    
-				visualConfigs[i].depthSize = depth ? 24 : 0;
-				visualConfigs[i].stencilSize = stencil ? 8 : 0;
-				visualConfigs[i].auxBuffers = aux ? caps->aux_buffers : 0;
-				visualConfigs[i].level = 0;
-				visualConfigs[i].visualRating = GLX_NONE_EXT;
-				visualConfigs[i].transparentPixel = 0;
-				visualConfigs[i].transparentRed = 0;
-				visualConfigs[i].transparentGreen = 0;
-				visualConfigs[i].transparentBlue = 0;
-				visualConfigs[i].transparentAlpha = 0;
-				visualConfigs[i].transparentIndex = 0;
-				++i;
+    if(NULL == visualPrivates) {
+	ErrorF("xcalloc failure when allocating visualPrivates");
+	xfree(visualConfigs);
+	return;
+    }
+
+ 
+    i = 0; /* current buffer */
+    for (stereo = 0; stereo < ((enable_stereo && caps->stereo) ? 2 : 1); ++stereo) {
+	for (depth = 0; depth < 2; ++depth) {
+	    for (aux = 0; aux < (caps->aux_buffers ? 2 : 1); ++aux) {
+		for (buffers = 0; buffers < caps->buffers; ++buffers) {
+		    for (stencil = 0; stencil < 2; ++stencil) {
+			for (accum = 0; accum < 2; ++accum) {
+			    visualConfigs[i].vid = -1;
+			    visualConfigs[i].class = -1;
+			    visualConfigs[i].rgba = TRUE;
+			    visualConfigs[i].redSize = -1;
+			    visualConfigs[i].greenSize = -1;
+			    visualConfigs[i].blueSize = -1;
+			    visualConfigs[i].redMask = -1;
+			    visualConfigs[i].greenMask = -1;
+			    visualConfigs[i].blueMask = -1;
+			    visualConfigs[i].alphaMask = 0;
+			    if (accum) {
+				visualConfigs[i].accumRedSize = 16;
+				visualConfigs[i].accumGreenSize = 16;
+				visualConfigs[i].accumBlueSize = 16;
+				visualConfigs[i].accumAlphaSize = 16;
+			    } else {
+				visualConfigs[i].accumRedSize = 0;
+				visualConfigs[i].accumGreenSize = 0;
+				visualConfigs[i].accumBlueSize = 0;
+				visualConfigs[i].accumAlphaSize = 0;
 			    }
+			    visualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE;
+			    visualConfigs[i].stereo = stereo ? TRUE : FALSE;
+			    visualConfigs[i].bufferSize = -1;
+			    
+			    visualConfigs[i].depthSize = depth ? 24 : 0;
+			    visualConfigs[i].stencilSize = stencil ? 8 : 0;
+			    visualConfigs[i].auxBuffers = aux ? caps->aux_buffers : 0;
+			    visualConfigs[i].level = 0;
+			    visualConfigs[i].visualRating = GLX_NONE_EXT;
+			    visualConfigs[i].transparentPixel = 0;
+			    visualConfigs[i].transparentRed = 0;
+			    visualConfigs[i].transparentGreen = 0;
+			    visualConfigs[i].transparentBlue = 0;
+			    visualConfigs[i].transparentAlpha = 0;
+			    visualConfigs[i].transparentIndex = 0;
+			    ++i;
 			}
 		    }
 		}
 	    }
-        }
+	}
     }
 
     if (i != numConfigs) {


More information about the xorg-commit mailing list