fix incorrect _MaxElement calculation
authorRoland Scheidegger <sroland@tungstengraphics.com>
Tue, 27 Mar 2007 19:03:32 +0000 (21:03 +0200)
committerRoland Scheidegger <sroland@tungstengraphics.com>
Tue, 27 Mar 2007 19:03:32 +0000 (21:03 +0200)
The calculation of _MaxElement was wrong if the stride was larger than
elementSize, which lead to rejection of every DrawElements call which accessed
the maximum element if CheckArrayBounds was enabled.

src/mesa/main/varray.c

index a048509e515d1c1b3fdfa186a80d6731e67669cd..bf1ad0165e66e8fd1a5b89c1fa2b9f1d433edb96 100644 (file)
@@ -76,7 +76,8 @@ update_array(GLcontext *ctx, struct gl_client_array *array,
     */
    if (ctx->Array.ArrayBufferObj->Name)
       array->_MaxElement = ((GLsizeiptrARB) ctx->Array.ArrayBufferObj->Size
-                            - (GLsizeiptrARB) array->Ptr) / array->StrideB;
+                            - (GLsizeiptrARB) array->Ptr + array->StrideB
+                            - elementSize) / array->StrideB;
    else
 #endif
       array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */