From 734e4946f50c1b83dafdb18ced652abc88e6a246 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Fri, 11 Jul 2014 00:05:44 +0200 Subject: mesa: fix crash in st/mesa after deleting a VAO This happens when glGetMultisamplefv (or any other non-draw function) is called, which doesn't invoke the VBO module to update _DrawArrays and the pointer is invalid at that point. However st/mesa still dereferences it to setup vertex buffers ==> crash. Reviewed-by: Brian Paul --- src/mesa/vbo/vbo_exec.c | 15 --------------- 1 file changed, 15 deletions(-) (limited to 'src/mesa/vbo/vbo_exec.c') diff --git a/src/mesa/vbo/vbo_exec.c b/src/mesa/vbo/vbo_exec.c index bd2b1b1a9df..eb903504328 100644 --- a/src/mesa/vbo/vbo_exec.c +++ b/src/mesa/vbo/vbo_exec.c @@ -82,21 +82,6 @@ void vbo_exec_invalidate_state( struct gl_context *ctx, GLuint new_state ) if (!exec->validating && new_state & (_NEW_PROGRAM|_NEW_ARRAY)) { exec->array.recalculate_inputs = GL_TRUE; - - /* If we ended up here because a VAO was deleted, the _DrawArrays - * pointer which pointed to the VAO might be invalid now, so set it - * to NULL. This prevents crashes in driver functions like Clear - * where driver state validation might occur, but the vbo module is - * still in an invalid state. - * - * Drivers should skip vertex array state validation if _DrawArrays - * is NULL. It also has no effect on performance, because attrib - * bindings will be recalculated anyway. - */ - if (vbo->last_draw_method == DRAW_ARRAYS) { - ctx->Array._DrawArrays = NULL; - vbo->last_draw_method = DRAW_NONE; - } } if (new_state & _NEW_EVAL) -- cgit v1.2.3