summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Staplin <georgestaplin@george-staplins-mac-pro.local>2008-10-07 12:12:38 -0600
committerJeremy Huddleston <jeremyhu@freedesktop.org>2008-10-08 18:45:09 -0700
commit803327929445256e159c10894e6305fbaa389982 (patch)
tree11d9176af3d4606bccb1831bcbbc49617b7b18df
parentf1fec6f323b27a0165325d8fcf6af7ae163bde14 (diff)
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. (cherry picked from commit 1056700971fd5c034396ed6dbea15e092f0c6332)
-rw-r--r--hw/xquartz/GL/visualConfigs.c104
1 files changed, 57 insertions, 47 deletions
diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index 821fad2d5..e46d628de 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) {