Mesa (master): egl_g3d: Check if the creation of pipe or st context fails.

Chia-I Wu olv at kemper.freedesktop.org
Thu Jan 14 09:37:22 UTC 2010


Module: Mesa
Branch: master
Commit: 81430b95d094f81548b9256bc47a8912d9dfd245
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=81430b95d094f81548b9256bc47a8912d9dfd245

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Thu Jan 14 17:29:12 2010 +0800

egl_g3d: Check if the creation of pipe or st context fails.

It should not return an incomplete EGLContext to the users.

---

 .../state_trackers/egl_g3d/common/egl_g3d.c        |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/egl_g3d/common/egl_g3d.c b/src/gallium/state_trackers/egl_g3d/common/egl_g3d.c
index 9d5734d..8b69a8c 100644
--- a/src/gallium/state_trackers/egl_g3d/common/egl_g3d.c
+++ b/src/gallium/state_trackers/egl_g3d/common/egl_g3d.c
@@ -547,7 +547,7 @@ egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
                        _EGLContext *share, const EGLint *attribs)
 {
    struct egl_g3d_display *gdpy = egl_g3d_display(dpy);
-   struct egl_g3d_context *xshare = egl_g3d_context(share);
+   struct egl_g3d_context *gshare = egl_g3d_context(share);
    struct egl_g3d_config *gconf = egl_g3d_config(conf);
    struct egl_g3d_context *gctx;
    const __GLcontextModes *mode;
@@ -572,8 +572,18 @@ egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
    mode = &gconf->native->mode;
    gctx->pipe =
       gdpy->native->create_context(gdpy->native, (void *) &gctx->base);
+   if (!gctx->pipe) {
+      free(gctx);
+      return NULL;
+   }
+
    gctx->st_ctx = gctx->stapi->st_create_context(gctx->pipe, mode,
-                        (xshare) ? xshare->st_ctx : NULL);
+                        (gshare) ? gshare->st_ctx : NULL);
+   if (!gctx->st_ctx) {
+      gctx->pipe->destroy(gctx->pipe);
+      free(gctx);
+      return NULL;
+   }
 
    return &gctx->base;
 }




More information about the mesa-commit mailing list