Don't cast the return value of malloc/realloc
[mesa.git] / src / glx / indirect_glx.c
index 7b542dd159c6696dde58b6cee43f7a9f82d994f6..53d5a914db74e47afae230a4643a4122649a93e4 100644 (file)
@@ -43,23 +43,20 @@ static struct _glapi_table *IndirectAPI = NULL;
 static void
 indirect_destroy_context(struct glx_context *gc)
 {
-   if (!gc->imported && gc->xid)
-      glx_send_destroy_context(gc->psc->dpy, gc->xid);
-
    __glXFreeVertexArrayState(gc);
 
    if (gc->vendor)
-      XFree((char *) gc->vendor);
+      free((char *) gc->vendor);
    if (gc->renderer)
-      XFree((char *) gc->renderer);
+      free((char *) gc->renderer);
    if (gc->version)
-      XFree((char *) gc->version);
+      free((char *) gc->version);
    if (gc->extensions)
-      XFree((char *) gc->extensions);
+      free((char *) gc->extensions);
    __glFreeAttributeState(gc);
-   XFree((char *) gc->buf);
-   Xfree((char *) gc->client_state_private);
-   XFree((char *) gc);
+   free((char *) gc->buf);
+   free((char *) gc->client_state_private);
+   free((char *) gc);
 }
 
 static Bool
@@ -359,7 +356,7 @@ indirect_create_context(struct glx_screen *psc,
    }
 
    /* Allocate our context record */
-   gc = Xmalloc(sizeof *gc);
+   gc = malloc(sizeof *gc);
    if (!gc) {
       /* Out of memory */
       return NULL;
@@ -369,10 +366,10 @@ indirect_create_context(struct glx_screen *psc,
    glx_context_init(gc, psc, mode);
    gc->isDirect = GL_FALSE;
    gc->vtable = &indirect_context_vtable;
-   state = Xmalloc(sizeof(struct __GLXattributeRec));
+   state = malloc(sizeof(struct __GLXattributeRec));
    if (state == NULL) {
       /* Out of memory */
-      Xfree(gc);
+      free(gc);
       return NULL;
    }
    gc->client_state_private = state;
@@ -387,10 +384,10 @@ indirect_create_context(struct glx_screen *psc,
     */
 
    bufSize = (XMaxRequestSize(psc->dpy) * 4) - sz_xGLXRenderReq;
-   gc->buf = (GLubyte *) Xmalloc(bufSize);
+   gc->buf = malloc(bufSize);
    if (!gc->buf) {
-      Xfree(gc->client_state_private);
-      Xfree(gc);
+      free(gc->client_state_private);
+      free(gc);
       return NULL;
    }
    gc->bufSize = bufSize;
@@ -439,8 +436,31 @@ indirect_create_context(struct glx_screen *psc,
    return gc;
 }
 
+static struct glx_context *
+indirect_create_context_attribs(struct glx_screen *base,
+                               struct glx_config *config_base,
+                               struct glx_context *shareList,
+                               unsigned num_attribs,
+                               const uint32_t *attribs,
+                               unsigned *error)
+{
+   /* All of the attribute validation for indirect contexts is handled on the
+    * server, so there's not much to do here.
+    */
+   (void) num_attribs;
+   (void) attribs;
+
+   /* The error parameter is only used on the server so that correct GLX
+    * protocol errors can be generated.  On the client, it can be ignored.
+    */
+   (void) error;
+
+   return indirect_create_context(base, config_base, shareList, 0);
+}
+
 struct glx_screen_vtable indirect_screen_vtable = {
-   indirect_create_context
+   indirect_create_context,
+   indirect_create_context_attribs
 };
 
 _X_HIDDEN struct glx_screen *
@@ -448,7 +468,7 @@ indirect_create_screen(int screen, struct glx_display * priv)
 {
    struct glx_screen *psc;
 
-   psc = Xmalloc(sizeof *psc);
+   psc = malloc(sizeof *psc);
    if (psc == NULL)
       return NULL;