Module: Mesa Branch: master Commit: b65e2195c4a3aeb6179e2ec227ba0a2414efc8af URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b65e2195c4a3aeb6179e2ec227ba0a2414efc8af
Author: Wiktor Janas <wixorp...@gmail.com> Date: Wed Feb 23 07:10:12 2011 +0100 st/mesa: fix computing the lowest address for interleaved attribs Ptr can be very well NULL, so when there are two arrays, with one having offset 0 (and thus NULL Ptr), and the other having a non-zero offset, the non-zero value is taken as minimum (because of !low_addr ? start ...). On 32-bit systems, this somehow works. On 64-bit systems, it leads to crashes. Signed-off-by: Marek Olšák <mar...@gmail.com> --- src/mesa/state_tracker/st_draw.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 11ebd06..6530a06 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -315,10 +315,13 @@ setup_interleaved_attribs(struct gl_context *ctx, const GLubyte *low_addr = NULL; /* Find the lowest address. */ - for (attr = 0; attr < vpv->num_inputs; attr++) { - const GLubyte *start = arrays[vp->index_to_input[attr]]->Ptr; + if(vpv->num_inputs) { + low_addr = arrays[vp->index_to_input[0]]->Ptr; - low_addr = !low_addr ? start : MIN2(low_addr, start); + for (attr = 1; attr < vpv->num_inputs; attr++) { + const GLubyte *start = arrays[vp->index_to_input[attr]]->Ptr; + low_addr = MIN2(low_addr, start); + } } for (attr = 0; attr < vpv->num_inputs; attr++) { _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit