From 40e46d0727920dffdcc23aba150aa3c37c6ecf65 Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 23 Oct 2007 12:32:02 -0600 Subject: [PATCH] In get_vertex(), slot was computed using & 31. Replace with % VCACHE_SIZE. Also, assert that index is not too large before indexing array. --- src/mesa/pipe/draw/draw_vertex_cache.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mesa/pipe/draw/draw_vertex_cache.c b/src/mesa/pipe/draw/draw_vertex_cache.c index 1f4adededee..dc939d6d14f 100644 --- a/src/mesa/pipe/draw/draw_vertex_cache.c +++ b/src/mesa/pipe/draw/draw_vertex_cache.c @@ -57,7 +57,7 @@ void draw_vertex_cache_invalidate( struct draw_context *draw ) static struct vertex_header *get_vertex( struct draw_context *draw, unsigned i ) { - unsigned slot = (i + (i>>5)) & 31; + unsigned slot = (i + (i>>5)) % VCACHE_SIZE; /* Cache miss? */ @@ -74,6 +74,8 @@ static struct vertex_header *get_vertex( struct draw_context *draw, draw->vcache.referenced |= (1 << slot); /* slot now in use */ } + assert(slot < Elements(draw->vcache.idx)); + draw->vcache.idx[slot] = i; /* Add to vertex shader queue: -- 2.30.2