Port Mesa to build on a P64 platform (e.g., Win64). P64 platforms
use 64-bit pointers and 32-bit longs. So, operations like casting pointers
to unsigned long and back to pointer won't work. glheader.h now
includes files to define uintptr_t, which should instead be used for
this sort of operation. It is an integer type that is the same size
as a pointer.
diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c
index cb827c2..6a531aa 100644
--- a/src/mesa/main/api_arrayelt.c
+++ b/src/mesa/main/api_arrayelt.c
@@ -989,7 +989,7 @@
/* generic attributes */
for (at = actx->attribs; at->func; at++) {
const GLubyte *src = at->array->BufferObj->Data
- + (unsigned long) at->array->Ptr
+ + (uintptr_t) at->array->Ptr
+ elt * at->array->StrideB;
at->func( at->index, src );
}
@@ -997,7 +997,7 @@
/* conventional arrays */
for (aa = actx->arrays; aa->func ; aa++) {
const GLubyte *src = aa->array->BufferObj->Data
- + (unsigned long) aa->array->Ptr
+ + (uintptr_t) aa->array->Ptr
+ elt * aa->array->StrideB;
aa->func( src );
}