st/mesa: Handle st_framebuffer_create returning NULL
authorMichel Dänzer <michel.daenzer@amd.com>
Thu, 13 Jul 2017 07:21:00 +0000 (01:21 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 13 Jul 2017 15:26:20 +0000 (09:26 -0600)
st_framebuffer_create returns NULL if stfbi == NULL or
st_framebuffer_add_renderbuffer returns false for the colour buffer.

Fixes Xorg crashing on startup using glamor on radeonsi.

Fixes: 147d7fb772a7 ("st/mesa: add a winsys buffers list in st_context")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101775
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/state_tracker/st_manager.c

index de16a3a2cf000b6442e2a36e3983a9841758cd5b..348b456c4d1d733fed7f9a7f1c0188f094ccb693 100644 (file)
@@ -802,10 +802,12 @@ st_framebuffer_reuse_or_create(struct st_context *st,
    if (stfb == NULL) {
       cur = st_framebuffer_create(st, stfbi);
 
-      /* add to the context's winsys buffers list */
-      LIST_ADD(&cur->head, &st->winsys_buffers);
+      if (cur) {
+         /* add to the context's winsys buffers list */
+         LIST_ADD(&cur->head, &st->winsys_buffers);
 
-      st_framebuffer_reference(&stfb, cur);
+         st_framebuffer_reference(&stfb, cur);
+      }
    }
 
    return stfb;