Mesa (mesa_7_7_branch): svga: check min_index, max_index before assertions

Brian Paul brianp at kemper.freedesktop.org
Thu Feb 11 23:48:14 UTC 2010


Module: Mesa
Branch: mesa_7_7_branch
Commit: 408f32dc165b36eb5ec0e2bbc7dcecd28f3a62d3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=408f32dc165b36eb5ec0e2bbc7dcecd28f3a62d3

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Feb 11 16:44:56 2010 -0700

svga: check min_index, max_index before assertions

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.

---

 src/gallium/drivers/svga/svga_draw.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_draw.c b/src/gallium/drivers/svga/svga_draw.c
index ca73cf9..1cd123b 100644
--- a/src/gallium/drivers/svga/svga_draw.c
+++ b/src/gallium/drivers/svga/svga_draw.c
@@ -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);




More information about the mesa-commit mailing list