Mesa (7.9): draw: Fix an off-by-one bug in a vsplit assertion.

Brian Paul brianp at kemper.freedesktop.org
Thu Jan 13 18:36:23 UTC 2011


Module: Mesa
Branch: 7.9
Commit: dab59f70e69b82f4a8f9466647e558d48e2b638e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dab59f70e69b82f4a8f9466647e558d48e2b638e

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Jan 13 11:35:24 2011 -0700

draw: Fix an off-by-one bug in a vsplit assertion.

When use_spoken is true, istart (the first vertex of this segment) is
replaced by i0 (the spoken vertex of the fan).  There are still icount
vertices.

Thanks to Brian Paul for spotting this.
(cherry picked from commit abbb1c8f084c6739bc9d6f559caf26f3f71b2fab)

---

 src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
index 3f66f96..75dba8c 100644
--- a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
+++ b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
@@ -258,9 +258,10 @@ vsplit_segment_fan_linear(struct vsplit_frontend *vsplit, unsigned flags,
    boolean use_spoken = ((flags & DRAW_SPLIT_BEFORE) != 0);
    unsigned nr = 0, i;
 
-   assert(icount + !!use_spoken <= vsplit->segment_size);
+   assert(icount <= vsplit->segment_size);
 
    if (use_spoken) {
+      /* replace istart by i0 */
       vsplit->fetch_elts[nr++] = i0;
       for (i = 1 ; i < icount; i++)
          vsplit->fetch_elts[nr++] = istart + i;




More information about the mesa-commit mailing list