svga: check min_index, max_index before assertions
authorBrian Paul <brianp@vmware.com>
Thu, 11 Feb 2010 23:54:48 +0000 (16:54 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 11 Feb 2010 23:54:48 +0000 (16:54 -0700)
It's possible for min_index and max_index to be ~0 if the min/max
values were not actually set or computed in the state tracker.
Skip some assertions in that case.

This only effects the debug build error checking.

(cherry picked from commit 408f32dc165b36eb5ec0e2bbc7dcecd28f3a62d3)

src/gallium/drivers/svga/svga_draw.c

index f4d2d8992c8b844f0469064c3d9b8c013b40e7f4..8b7ca2e1123c6f4421b7981a83189bd20f370272 100644 (file)
@@ -253,7 +253,9 @@ enum pipe_error svga_hwtnl_prim( struct svga_hwtnl *hwtnl,
          assert(index_bias >= 0);
          assert(min_index <= max_index);
          assert(offset + index_bias*stride < size);
-         assert(offset + (index_bias + min_index)*stride < size);
+         if (min_index != ~0) {
+            assert(offset + (index_bias + min_index) * stride < size);
+         }
 
          switch (hwtnl->cmd.vdecl[i].identity.type) {
          case SVGA3D_DECLTYPE_FLOAT1:
@@ -314,7 +316,9 @@ enum pipe_error svga_hwtnl_prim( struct svga_hwtnl *hwtnl,
          }
 
          assert(!stride || width <= stride);
-         assert(offset + (index_bias + max_index)*stride + width <= size);
+         if (max_index != ~0) {
+            assert(offset + (index_bias + max_index) * stride + width <= size);
+         }
       }
 
       assert(range->indexWidth == range->indexArray.stride);