fix cache overflow bug in get_vertex()
authorBrian <brian.paul@tungstengraphics.com>
Mon, 20 Aug 2007 17:41:23 +0000 (11:41 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Mon, 20 Aug 2007 17:41:23 +0000 (11:41 -0600)
src/mesa/pipe/draw/draw_prim.c

index 95e71efd6db94fe49b7040606e47f52b629ad9e6..fb8bc0f36da5cb40380c5cdcd77513f427351e6b 100644 (file)
@@ -144,8 +144,8 @@ static struct vertex_header *get_vertex( struct draw_context *draw,
 
       /* If slot is in use, use the overflow area:
        */
-      if (draw->vcache.referenced & (1<<slot)) 
-        slot = draw->vcache.overflow++;
+      if (draw->vcache.referenced & (1 << slot))
+        slot = VCACHE_SIZE + draw->vcache.overflow++;
 
       draw->vcache.idx[slot] = i;
 
@@ -158,7 +158,8 @@ static struct vertex_header *get_vertex( struct draw_context *draw,
 
    /* Mark slot as in-use:
     */
-   draw->vcache.referenced |= (1<<slot);
+   if (slot < VCACHE_SIZE)
+      draw->vcache.referenced |= (1 << slot);
    return draw->vcache.vertex[slot];
 }