From 64871747bb7b611ffe429fbf1724bd98ee25dd84 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 22 Jan 2010 11:45:40 -0700 Subject: [PATCH] gallium/draw: apply DRAW_PIPE_FLAG_MASK to all vertex elements Depending on first/last provoking vertex either the first or last element/index may have the extra DRAW_PIPE_x flags. Mask off those bits for all vertex elements to be safe (esp. for the quad case). This may be overly cautious, but it's a cheap operation. Fixes a segfault caused by large/bogus vertex indexes otherwise. --- src/gallium/auxiliary/draw/draw_pipe.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/draw/draw_pipe.c b/src/gallium/auxiliary/draw/draw_pipe.c index c9fd1a793ae..11d6485dcf0 100644 --- a/src/gallium/auxiliary/draw/draw_pipe.c +++ b/src/gallium/auxiliary/draw/draw_pipe.c @@ -187,14 +187,14 @@ static void do_triangle( struct draw_context *draw, do_triangle( draw, \ elts[i0], /* flags */ \ verts + stride * (elts[i0] & ~DRAW_PIPE_FLAG_MASK), \ - verts + stride * elts[i1], \ - verts + stride * elts[i2]) + verts + stride * (elts[i1] & ~DRAW_PIPE_FLAG_MASK), \ + verts + stride * (elts[i2] & ~DRAW_PIPE_FLAG_MASK) ); #define LINE(flags,i0,i1) \ do_line( draw, \ elts[i0], \ verts + stride * (elts[i0] & ~DRAW_PIPE_FLAG_MASK), \ - verts + stride * elts[i1]) + verts + stride * (elts[i1] & ~DRAW_PIPE_FLAG_MASK) ); #define POINT(i0) \ do_point( draw, \ -- 2.30.2