mesa/st: workaround for crashes in st_copy_texsubimage
authorKeith Whitwell <keithw@vmware.com>
Mon, 27 Apr 2009 17:56:26 +0000 (18:56 +0100)
committerKeith Whitwell <keithw@vmware.com>
Tue, 28 Apr 2009 17:15:16 +0000 (18:15 +0100)
Proper fix for this hasn't been identified, but avoid crashing.

src/mesa/state_tracker/st_cb_texture.c

index aeb75117ec306c008d8cdc61f565eb7ce2280df9..b7b791d9a41db3bb00712f95b99d90b020cd3490 100644 (file)
@@ -51,6 +51,7 @@
 #include "state_tracker/st_texture.h"
 #include "state_tracker/st_gen_mipmap.h"
 #include "state_tracker/st_inlines.h"
+#include "state_tracker/st_atom.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
@@ -1317,6 +1318,10 @@ st_copy_texsubimage(GLcontext *ctx,
    /* any rendering in progress must complete before we grab the fb image */
    st_finish(ctx->st);
 
+   /* make sure finalize_textures has been called? 
+    */
+   if (0) st_validate_state(ctx->st);
+
    /* determine if copying depth or color data */
    if (texBaseFormat == GL_DEPTH_COMPONENT ||
        texBaseFormat == GL_DEPTH24_STENCIL8) {
@@ -1330,6 +1335,11 @@ st_copy_texsubimage(GLcontext *ctx,
       strb = st_renderbuffer(fb->_ColorReadBuffer);
    }
 
+   if (!strb || !strb->surface || !stImage->pt) {
+      debug_printf("%s: null strb or stImage\n", __FUNCTION__);
+      return;
+   }
+
    assert(strb);
    assert(strb->surface);
    assert(stImage->pt);